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