2 задачи в TP по двусерным массивам

Регистрация на сайте
GRATIS форум > Архивы > ** Компьютер
Skiler 666
Помогить пожалуйста решить: 1)В задаваемой квадратной матрице обнулить элементы, расположенные выше главной и побочной диагонали; 2)В задаваемой вещественной матрице поменять местами к-ю и i-ю строки. Спасибо!
Shinji
По первой:
CODE

var M: array[1..N,1..N] of integer;
     H,W0,W1,i,j:integer;

....

H := N div 2;
if (N mod 2=0) then H := H-1;
W0 := 2;W1 := N-1;
for i:=1 to H do
begin
 for j:=W0 to W1 do
     M[i,j]:=0;
 W0:=W0+1;
 W1:=W1-1;
end;



По второй:
CODE

var M:array[1...N,1..N] of real;
  i,k,j:integer;
 Buf:real;
....

for j:=1 to N do
begin
  Buf := M[i,a];
  M[i,a]:=M[k,a];
  M[k,a]:=Buf;
end;



Надеюсь, сделать ввод и печать матриц сможете самостоятельно.
Skiler 666
Конечно, спасибо за помощь! wink.gif
Skiler 666
В задаваемой квадратной матрице обнулить элементы, расположенные ниже главной и побочной диагонали;

[/CODE]Program _2;
type mtr=array[1..20,1..20] of integer;
Var A:mtr; i,j,n,m:Integer;
Begin
Write('Введите количество строк матрицы n=');
Readln(n);
Write('Введите количество столбцов матрицы m=');
readln(m);
Writeln('Введите',n,'строк по',m,'элементов через пробел');
Writeln('В конце строки Enter');
for i:=1 to n do for j:=1 to m do read(A[i,j]);
for i := n div 2 to n do
for j := n - i + 2 to i - 1 do a[i, j] := 0;
For i:=1 to n do
Begin
For j:=1 to n do write(a[i,j]);
Writeln;
End;
Readln;
Readln;
End. [CODE]

апускаю программу,ввожу числа, а нужного результата нет,числа не обнуляются. Помогите,может,что нибудь исправить надо или дописать.
Shinji
ИМХО, вот в этом цикле
CODE
for j := n - i + 2 to i - 1 do a[i, j] := 0;


надо махнуть местами границы.
То есть for j:= i-1 to n-i+1
Skiler 666
Получилось! biggrin.gif Спасибо большое Shinji за помощь!!! wink.gif