|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите решить задачу в Delphi...
Помогите решить простенькую задачу... ато я в Delphi почтиничего не соображаю
Дано: b=-2.5; db=0.3. Z вычислить по формуле Z=b^3+ln(2/(b^2+b+2)). Считать Z до тех пор, пока выражение под знаком логорифма больше 0.045. Определить k - количество вычесленных Z. Вывести на экран b, Z, k. Заранее благодарен!! |
#2
|
|||
|
|||
Если db - приращение величины b, то текст следующий:
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; b,db,log,z:real; k:integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin b:=-2.5; db:=0.3; end; procedure TForm1.Button1Click(Sender: TObject); begin k:=0; log:=1E30; while log>0.045 do begin log:=2/(b*b+b+2); z:=b*b*b+ln(log); memo1.Lines.Add('z = '+floattostr(z)); k:=k+1; b:=b+db; end; memo1.Lines.Add('b = '+floattostr(b)); memo1.Lines.Add('k = '+floattostr(k)); end; end. Последний раз редактировалось Andrevv, 04.04.2008 в 18:37. |
#3
|
|||
|
|||
Спасибо огромное! Выручил))) Тока можешь мне немного обьяснить - в 2-х словах - ато у меня не хочет работать прога - зависает! - я по ходу дела что-то не добавил - какой -то компонент или фиг его знает -
**procedure FormCreate(Sender: TObject);** - это не понятно немнго - можешь обьяснить что это означает, если не труно... компоненты я тока Memo и Button добавил... Последний раз редактировалось AndrYxo, 04.04.2008 в 19:47. |
#4
|
|||
|
|||
Цитата:
Предлагаю подправить. Согласно задаче надо вывести Z,b,k. Надо строчку Код:
memo1.Lines.Add('z = '+floattostr(z)); |
#5
|
|||
|
|||
Цитата:
|
#6
|
|||
|
|||
Andrevv и MegaPiha огромное вам спасибо! Выручили! Не работало потому, что 2-й щелчек на форме не сделал! Спасибо что подсказали - а если строку memo1.Lines.Add('z = '+floattostr(z)); вывести из цикла, то оно считает только одно значение - а по условию надо что бы считало до того, пока не станет меньше 0.045. Еще раз большое спасибо)
|
#7
|
|||
|
|||
Добрый вечер! Ребята, помогите плиз..нужно сделать прогу..
Составить подпрограмму, которая в матрице Y(m,n) меняет местами 1-й и k-й столбец (1<m). C помощью подпрограммы поменять местами первый и последний столбцы матриц A(12,9), C(7,11), и третий и пятый столбц матрицы B(8,15). Исходные и преобразованные матрицы вывести на экран дисплея. Элементы входных матриц вычисляются по формулам: A(c индексом i,j)=tg(j)+e^cos(i); B(c индексом i,j)=sin(3.2j+4.2)+e^tg(1.5i); C(c индексом i,j)=cos(12.4j+1). Заранее благодарю! |
#8
|
|||
|
|||
Вот, тут создаётся матрица случайным образом заполняется, меняет первый и последний столбец...это в обработке щелчка на Бутон2. я полный код выложу, на форму прикрепиш чё попросит дельфи, глянеш нормально, подредактируеш под своё задание. Тут фишка в том чт что переносимый столбец матрицы в одномерный массив пишется, получается что первый и последний столбцы каждый в свой одномерн массив пишутся, а потом дописываются наоборот в матрицу.
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; StringGrid1: TStringGrid; StringGrid2: TStringGrid; Button2: TButton; Button3: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label8: TLabel; Label9: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; a : array [1..50, 1..50] of integer; b : array [1..50] of integer; c : array [1..50] of integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var n,m,i,j:integer;f:TextFile; begin Randomize; AssignFile (f,'f1.txt'); n:=StrToInt(Edit1.Text); m:=StrToInt(Edit2.Text); For i:=0 to n-1 do For j:=0 to m-1 do a[i,j]:=Random(100)-50; StringGrid1.RowCount:=n+1; StringGrid1.ColCount:=m+1; With StringGrid1 do Begin i:=0; For j:=1 to RowCount do Cells[i,j]:=IntToStr(j); j:=0; For i:=1 to ColCount do Cells[i,j]:=IntToStr(i); End; Rewrite(f); With StringGrid1 do For i:=1 to n do For j:=1 to m do Begin Cells[j,i]:=IntToStr(a[i-1,j-1]); WriteLn(f,a[i-1,j-1]); End; CloseFile(f); end; procedure TForm1.Button2Click(Sender: TObject); var n,m,i,j:integer; f:TextFile; begin n:=StrToInt(Edit1.Text); m:=StrToInt(Edit2.Text); AssignFile (f,'f2.txt'); j:=0; For i:=0 to m-1 do Begin b[i]:=a[i,j]; End; j:=m-1; For i:=0 to m-1 do c[i]:=a[i,j]; For i:=0 to m-1 do a[i,j]:=b[i]; j:=0; For i:=0 to m-1 do a[i,j]:=c[i]; StringGrid2.RowCount:=n+1; StringGrid2.ColCount:=m+1; With StringGrid2 do Begin i:=0; For j:=1 to RowCount do Cells[i,j]:=IntToStr(j); j:=0; For i:=1 to ColCount do Cells[i,j]:=IntToStr(i); End; Rewrite(f); With StringGrid2 do For i:=1 to n do For j:=1 to m do Begin Cells[j,i]:=IntToStr(a[i-1,j-1]); WriteLn(f,a[i-1,j-1]); End; CloseFile(f); end; procedure TForm1.Button3Click(Sender: TObject); begin Close; end; end. Последний раз редактировалось Admin, 05.04.2008 в 12:09. |
#9
|
|||
|
|||
сори за длинный лист..я незнаю как с лентой прокрутки делать
Admin: Тег CODE (пункт 2.8 правил) Последний раз редактировалось Admin, 05.04.2008 в 12:12. |
#10
|
|||
|
|||
Farmazon, спасибки огромное! Щас буду пробовать
|
#11
|
|||
|
|||
Farmazon, Ну вообщем попробовала я спасибо ещё раз за помощь но я все равно сама не справлюсь с задачей - ну не мое это програмирование - понимать - немного понимаю - но как до дела доходит - так не знаю вообще ничего - помоги мне еще немного... первое по матрице Y(m,n) нужно что бы через Edit вводился номер столбца - k и еще на 3 buttona сделать код на 3 масива А, В и С которые будут заполняться не случайными числами, а по уравнениям и в них на кнопку еще на 3 buttona поменять столбцы как в условии... а .. и ещё надо что бы новые матрицы в новые стринггриды выводились - то есть исходные в одном - а меняешь вдругие - то есть на 8 стрингридов должно быть. Я не соображаю Если можешь напиши плиз.. буду очень благодарна за помощь!
|
#12
|
|||
|
|||
Сори Виол, но у мня самого времени в обрез всю неделю до ночи сижу за своими задачами...вон две задачи выложил, никто неотписывает...наверн кто просмотрели немогут помочь
Я попробую немного пояснить в каком направлении двигаться... Вот кусок кода из бутон2: Цитата:
Цитата:
|
#13
|
|||
|
|||
Farmazon, спасибо тебе огромное что тратишь своё время и на мою задачу.. сейчас буду пробовать.. надеюсь что получится! спасибо большое!
|
#14
|
|||
|
|||
это снова я - немного не получается написать прогу - которую пишут свободно все 10-ти классники - вот условие: Наити произведение положительных элементов масива А={a[i]}, удовлетворяющих условию:
с<=a[i]<=d - где с и d задаем сами через Edit вот что у меня получилось... Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; StringGrid1: TStringGrid; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a: array [0..19] of intejer; P, c, d: real; i: intejer; begin randomize; fot i:=0 to 19 do begin a[i]:=random(50--50+1)-50; StringGrid1.Cells[0,i]:=inttoStr(a[i]); end; c:=StrtoInt(Edit1.Text); d:=StrtoInt(Edit2.Text); P:=1; for i:=0 to 19 do if (a[i]>0) and (a[i]>=c) and (a[i]<=d) then P:=P*a[i]; Memo1.Lines.Add(FormatFloat('0.00',P); end; end. Подскажите плиз... Последний раз редактировалось Admin, 05.04.2008 в 14:17. |
#15
|
|||
|
|||
сначала найди все положительные элементы массива a[i], запиши их в массив b[i], затем от туда отфильтруй эти значения условием с<=a[i]<=d
ну чёто типа этого: Код:
For i:=0 to 19 do begin if a[i]>=o then b[i]:=a[i] end; For i:=0 to 19 do begin if (b[i]<=d) and (c<=b[i]) then a[i]:=b[i]; end; |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|