![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите решить простенькую задачу... ато я в 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; ![]() |
![]() |
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|