Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lektsia6_massivy.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
904.7 Кб
Скачать

7.7. Ввод и вывод массивов

Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.

Для ввода и вывода одномерного массива можно использовать компоненты Memo или StringGrid. В следующем примере мы воспользуемся уже знакомым компонентом Memo.

Рассмотрим пример программы обработки массива, заданного неявно (блок-схема алгоритма приведена выше).

nom

Процедура обработки щелчка на кнопке «Вычисление» (кн. Button_calc) – массив задан неявно

procedure TForm1.Button_calcClick(Sender: TObject);

type mas=array[1..10] of real;

var

X,Y:mas;

Xn,Xk,dX, max:real;

i,N, nom:integer;

begin

Xn:=StrToFloat(Edit_Xn.Text);

Xk:=StrToFloat(Edit_Xk.Text);

dX:=StrToFloat(Edit_dX.Text);

N:=trunc((Xk-Xn+dx/2)/hX)+1;

for i:=1 to N do

begin

X[i]:=Xn+dX*(i-1);

if (cos(X[i]<>-1) then

Y[i]:=ln(abs(2+2*cos(X[i])))

Else

Y[i]:=0;

Memo_X.Lines.Add(FormatFloat('000.0',X[i]));

Memo_Y.Lines.Add(FormatFloat('000.0',Y[i]));

if (i=1) then

begin

max:=Y[i];

nom:=i

end

else

if (Y[i]>max) then

begin

max:=Y[i];

nom:=i

end;

end;

Edit_max.Text:=FloatToStr(max);

Edit_nom.Text:=IntToStr(nom);

End;

Рассмотрим этот же пример программы обработки массива, заданного явно .

ПРИМЕР 7.3. Задан массив X(N) и его размерность N. Сформировать массив Y, вычислив по формуле его элементы. Определить максимальный элемент массива Y и его порядковый номер.

Если массив X(N) задан, это означает, что задана его размерность и его элементы. В этом случае сначала необходимо ввести размерность массива N. Затем организовать цикл для поэлемнного ввода массива.

nom

Процедура обработки щелчка на кнопке «Вычисление» (кн. Button_calc) – массив задан явно

procedure TForm1.Button_calcClick(Sender: TObject);

type mas=array[1..10] of real;

var

X,Y:mas;

max:real;

i,N, nom:integer;

begin

//определие размерности X по количеству строк Memo_X

N:=Memo_X.Lines.Count;

for i:=1 to N do

begin

X[i]:= StrToFloat(Memo_X.Lines[i-1]);//ввод i-го элемента массива

if (cos(X[i]<>-1) then

Y[i]:=ln(abs(2+2*cos(X[i])))

Else

Y[i]:=0;

Memo_Y.Lines.Add(FormatFloat('000.0',Y[i])); // вывод i-го элемента массива

if (i=1) then

begin

max:=Y[i];

nom:=i

end

else

if (Y[i]>max) then

begin

max:=Y[i];

nom:=i

end;

end;

Edit_max.Text:=FloatToStr(max);

Edit_nom.Text:=IntToStr(nom);

End;

11

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]