Ввод и вывод массивов
Implementation
a: array[10] of integer = (0,0,0,0,0,0,0,0,0,0);
Team: array[1..4] of String[10]=
('Шахтёр','Динамо','Спартак', 'Зенит');
Обратите внимание, что количество элементов списка инициализации должно соответствовать размерности массива. Если это будет не так, то компилятор выведет сообщение об ошибке: Number of elements differs from declaration (количество элементов не соответствует указанному в объявлении).
При попытке инициализировать локальный массив, компилятор выводит сообщение об ошибке: Cannot initialize local variables (локальная переменная не может быть инициализирована).
Под вводом массива понимается процесс получения от пользователя (или из файла) во время работы программы значений элементов массива.
Для ввода и вывода одномерного массива можно использовать компоненты Memo или StringGrid. В следующем примере мы воспользуемся уже знакомым компонентом Memo.
Рассмотрим пример программы обработки массива, заданного неявно (блок-схема алгоритма приведена выше).
|

Процедура обработки щелчка на кнопке «Вычисление» (кн. 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=0) 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;
Рассмотрим этот же пример программы обработки массива, если он задан явно (блок-схема алгоритма приведена выше).
|

Процедура обработки щелчка на кнопке «Вычисление» (кн. 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
N:=Memo_X.Lines.Count; // размерность X
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]));
if (i=0) 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;