Здраствуйте! Не получается решить вот эту задачу: В задаваемой квадратной матрице обнулить элементы, расположенные выше главной и побочной диагоналей. Вроде алгоритм правильный.
Program _1;
type mtr=array[1..20,1..20] of integer;
Var A:mtr; H,W0,W1,i,j,n,m:Integer;
Begin
Writeln('Введите',n,'строк по',m,'элементов через пробел');
Writeln('В конце строки Enter');
for i:=1 to n do for j:=1 to m do read(A[i,j]);
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;
for j:=1 to n do write(A[i,j],' ');
Readln;
END.
А M разве не Integer???Может тогда A[i,j]?
Спасибо за помощь первой задачи!! Но вот не пойму как обнулить элементы,стоящие ниже главной и побочной диагонали.
Пробовал так:
If ((i+j)-1)>N then A[i,j]:=0;Но както не получается обнулить. Подскажите,как правильно сделать. Спасибо.
for i := n div 2 to n do(это если НЕ включать диагонали)
for j := n - i + 2 to i - 1 do a[i, j] := 0;
А если с диагоналями?
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.
Тебе уже написали, что надо сделать - ты проигнорировал... Еще раз написать, чтобы ты еще раз проигнорировал? Извини, я этого делать не буду...
for i := n div 2 to n doвроде там где нужно,а программа не обнуляет,числа остаются без изменений.Вот и хотел узнать почему.
for j := n - i + 2 to i - 1 do a[i, j] := 0;
Помучился с прогарммой и получилось! Спасибо Всем за помощь!