Текст задания :
Вывести значение аргумента при изменении которого от нуля до данного значения, число локальных минимумов и максимумов функции y=sin(a*x^2) достигнет 20.
Решение :
Создаем новый VCL проект. Бросаем на форму компоненты
TStringGrid; TButton;TEdit;TLabel;и TLabel;
Получится должно что-то вроде этого :
Вывод таблицы значений будем осуществлять в компонент StringGrid1.
Единственную кнопку запрограммируем следующим образом :
[cc lang=”delphi” tab_size=”2″ line_numbers=”false” no_links=”false”]
procedure TForm1.Button1Click(Sender: TObject);
var
YY, AA, XX, TT, n, i: integer;
begin
with StringGrid1 do
for i := 0 to ColCount – 1 do
Cols[i].Clear;
AA := strtoint(Form1.Edit1.Text);
StringGrid1.RowCount := 1;
StringGrid1.Rows[0].Strings[1] := ‘Y’;
StringGrid1.Rows[0].Strings[2] := ‘A’;
StringGrid1.Rows[0].Strings[3] := ‘X’;
TT := 1;
n := 0;
XX := 0;
while n < 20 do
begin
YY := Round(Sin(AA * XX * XX));
StringGrid1.Rows[TT].Strings[0] := inttostr(TT);
StringGrid1.Rows[TT].Strings[1] := inttostr(YY);
StringGrid1.Rows[TT].Strings[2] := inttostr(AA);
StringGrid1.Rows[TT].Strings[3] := inttostr(XX);
if (YY = 1) or (YY = -1) then
n := n + 1;
if n = 20 then
break;
inc(TT);
inc(XX);
StringGrid1.RowCount := TT + 1;
end;
ShowMessage(‘X= ‘ + inttostr(XX));
end;
[/cc]
Аргумент a будет задаваться из компонента Edit1 .
В конце работы процедуры мы получим сообщение со значением переменной x.