ДВУМЕРНЫЕ МАССИВЫ
Посмотрите пожалуйста эти задачи что тут неправильно?..
1)Задача:Поменять местами второй столбец и столбец, в котором находится последний элемент, больший 100 . Принять, что элементы ,большие 100, в массиве есть и что массив просматривается слева направо и сверху вниз.
Код Delphi
Код:
var
Form6: TForm6;
massiv,massiv1,massiv2: array of array of integer;
k, n:integer;
implementation
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
k:=strtoInt(InputBox('Размер массива', 'Введите число строк в массиве','0'));
n:=strtoInt(InputBox('Размер массива', 'Введите число столбцов в массиве','0'));
SetLength(massiv,n,k);
SetLength(massiv1,n,k);
SetLength(massiv2,n,k);
//установка размера массива
end;
procedure TForm6.Button2Click(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to n-1 do
for j:=0 to k-1 do
massiv[i,j]:=strtoint(InputBox('Элементы массива', 'Введите'+inttostr(i)+inttostr(j)+' элемент массива','0'));
//Ввод элементов массива
end;
procedure TForm6.Button3Click(Sender: TObject);
var s:string;
x,y,t,i2,j2,i,j:integer;
begin
for i:=0 to n-1 do
for j:=0 to k-1 do
if massiv[i,j]>100 then begin i2:=x ; j2:=y;
end;
begin
for i:=0 to n-1 do begin
for j:=0 to k-1 do
if j=y then massiv2[i,j]:=massiv[i,2] else massiv2[i,j]:=massiv[i,j];
end;
for x:=0 to n-1 do begin
for y:=0 to k-1 do
t:=massiv[x,y];
massiv[x,y]:=massiv[i,j];
massiv[i,j]:=t;
edit1.text:=inttostr(t);
for i:=0 to n-1 do // Вывод элементов массива в виде матрицы
begin
s:='';
for j:=0 to k-1 do
begin
s:=s+inttostr(massiv[i,j])+' ';
end;
end;
end;
end;
end;
2)Задача: Дан двумерный массив размером n x n, заполненный целыми числами. Выяснить, является ли массив магическим квадратом. В магическом квадрате суммы элементов по всем строкам, столбцам и двум диагоналям равны. Значение, которому должны быть равны суммы, определить самостоятельно.
код:
var a:array of array integer;//матрица, которую проверяем на "магичность"
magic, // магический квадрат или нет (=0 - нет, =1 - да)
i,j // счётчик циклов
sum, sum_base:integer; // сумма элементов строки матрицы
begin
//Проверяем заполненную матрицу на «магичность»
magic:=1; // предполагаем, что матрица магический квадрат
sum_base:=0; // пока сумма элементов строки матрицы = 0
//подсчитываем сумму
for i:=1 to n do
sum_base:=sum_base+a[1,i];
//проверяем все строки, кроме первой (сумму ее элементов мы приняли в качестве базовой).
for i:=2 to n do
begin
sum:=0;
for j:=1 to n do
sum:=sum+a[i,j];
if sum<>sum_base then magic:=0;
end;
//проверяем все столбцы
for j:=1 to n do
begin
sum:=0;
for i:=1 to n do
sum:=sum+a[i,j];
if sum<>sum_base then magic:=0;
end;
//проверяем диагонали
sum:=0;
for i:=1 to n do
sum:=sum+a[i,i];
if sum<>sum_base then magic:=0;
sum:=0;
for i:=1 to n do
sum:=sum+a[i,10-i+1];
if sum<>sum_base then magic:=0;
// ВЫВОДИМ РЕЗУЛЬТАТ
if (magic=1) then
edit1.text:='Матрица является Магическим квадратом'
else
edit1.text:='Матрица не является Магическим квадратом';
end;
3)Определить координаты первого минимального элемента побочной диагонали квадратного массива.
код:
var
Form6: TForm6;
massiv,massiv1: array of array of integer;
k, n,i,j:integer;
implementation
{$R *.dfm}
procedure TForm6.Button1Click(Sender: TObject);
begin
k:=strtoInt(InputBox('Размер массива', 'Введите число строк в массиве','0'));
n:=strtoInt(InputBox('Размер массива', 'Введите число столбцов в массиве','0'));
SetLength(massiv,n,k);
SetLength(massiv1,n,k);
//установка размера массива
end;
procedure TForm6.Button2Click(Sender: TObject);
var
i,j:integer;
begin
for i:=0 to n-1 do
for j:=0 to k-1 do
massiv[i,j]:=strtoint(InputBox('Элементы массива', 'Введите'+inttostr(i)+inttostr(j)+' элемент массива','0'));
//Ввод элементов массива
end;
procedure TForm6.Button3Click(Sender: TObject);
var s:string;
min,j:integer;
begin
j:=1;
min:=massiv[1,n-1];
for i:=1 to n-1 do
if massiv[i,n-1-i]<min then
begin
min:=massiv[i,n-1-i];
j:=i;
end;
edit1.text:= inttostr(min);
edit2.text:= inttostr(j);
Админ: Напоминаю про оформление кода, при рецедиве последуют санкции. + Оформление загловка заглавными недопускается. Учим правила!
|