26.12.2010, 22:05
|
Прохожий
|
|
Регистрация: 13.12.2010
Сообщения: 25
Репутация: 10
|
|
Код:
procedure TfrmMain.Button1Click(Sender: TObject);
var
In_Data:array of real;
In_N,i,j:integer;
max:array[1..4] of real;
maxn:array[1..4] of integer;
DataFile : TextFile;
// переменная цикла
// линия для графика - если нужна
Line : TLineSeries;
begin
// получение числа точек в исходных данных с формы
In_N := 35;
// создаем массив данных
// вначале задаем размер массива
SetLength(In_Data,In_N);
// задаем элементы массива
for i := 0 to In_N - 1 do
begin
In_Data[i] := Cos(i*In_N)*Exp(-i*0.44)+1;
//MemoOut.Clear;
// и покажем новые
// Format() - преобразование числа в строку по указанному
// формату. Подробнее и с примерами в справке Delphi - F1.
MemoOut.Lines.Add(Format('%8.3f',[In_Data[i]]));
end;
// *** добавим график
// уберем старый график
ChartMain.SeriesList.Clear;
// создадим новый
Line := TLineSeries.Create(ChartMain);
// присвоим значения Y координат
Line.AddArray(In_Data);
// изменим цвет и толщину линии
Line.LinePen.Color := clBlue;
Line.LinePen.Width := 1;
// и выведем на форму
ChartMain.AddSeries(Line);
// свяжем переменную с файлом DataFile
AssignFile(DataFile,'in.txt');
// откроем для записи
Rewrite(DataFile);
// запись параметров
Writeln(DataFile);
// размер массива чисел
Writeln(DataFile,In_N);
// каждое значение пишем в новую строку
for i:=1 to 4 do
maxn[i]:=0;
max[1]:=In_Data[1];
for i := 0 to In_N - 1 do
begin
if (max[1]<In_Data[i]) then
begin
max[1]:=In_Data[i];
maxn[1]:=i;
end;
end;
for j:=2 to 4 do
begin
max[j]:=0;
for i := 0 to In_N - 1 do
begin
if (max[j]<In_Data[i])and(In_Data[i]<=max[j-1])and(maxn[j-1]<>i) then
begin
max[j]:=In_Data[i];
maxn[j]:=i;
end;
end;
end;
for i := 0 to In_N - 1 do
Writeln(DataFile,max[i]);
//закрываем файл - сохраняем его
CloseFile(DataFile);
//DeleteFile('out.txt');
end;
|