Зачем мне одномерный если в задании двумерный. Т.е. вводим число строк и число столбцов, затем вводим элементы, которые имеют свою строку и столбец. Программу я условно говоря решил, код программы вроде верный.
Но запускается она и меняет половины, если вместо n и k(размерность массива) вводить конкретное число (н-р 4 и 3). По-другому не работает. Не соображу в чем ошибка. Вот код:
Код:
var
Form9: TForm9;
Ar: array of array of integer;
n,k:integer;
implementation
{$R *.dfm}
procedure TForm9.Button3Click(Sender: TObject);
begin
n:=strtoInt(InputBox('Размер массива', 'Введите число строк в массиве','0'));
k:=strtoInt(InputBox('Размер массива', 'Введите число столбцов в массиве','0'));
SetLength(Ar,n,k);
//установка размера массива
end;
procedure TForm9.Button1Click(Sender: TObject);
var
i,j:integer;
begin
for i:=1 to n do
for j:=1 to k do
Ar[i,j]:=strtoint(InputBox('Элементы массива', 'Введите'+inttostr(i)+inttostr(j)+' элемент массива','0'));
//Ввод элементов массива
end;
procedure TForm9.Button2Click(Sender: TObject);
var x,i,j:integer;
s,s1:string;
begin
for i:=1 to n do // Вывод элементов массива в виде матрицы
begin
s:='';
for j:=1 to k do
begin
s:=s+inttostr(Ar[i,j])+' ';
end;
ListBox1.Items.Add(s);
end;
for i:=1 to n div 2 do begin
S1:='';
for j:=1 to k do
begin
x:=Ar[i,j];
Ar[i,j]:=Ar[(n div 2)+i,j];
Ar[(n div 2)+i,j]:=x;
end;
end;
for i:=1 to n do // Вывод элементов массива в виде матрицы
begin
s1:='';
for j:=1 to k do
begin
s1:=s1+inttostr(Ar[i,j])+' ';
end;
ListBox2.Items.Add(s1);
end;
end;
end.
Админ: Учимся оформлять код!