Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерный массив. Матрица
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Klubbhead
Здраствуйте! Не получается решить вот эту задачу: В задаваемой квадратной матрице обнулить элементы, расположенные выше главной и побочной диагоналей. Вроде алгоритм правильный.


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[i,j]:=0, пишется ошибка 121. Помогите решить,а то срочно нужно,спасибо!
Артемий
blink.gif А M разве не Integer???Может тогда A[i,j]?
Klubbhead
Спасибо за помощь первой задачи!! Но вот не пойму как обнулить элементы,стоящие ниже главной и побочной диагонали.
Пробовал так:
 If ((i+j)-1)>N then A[i,j]:=0;
Но както не получается обнулить. Подскажите,как правильно сделать. Спасибо.
volvo
  for i := n div 2 to n do
for j := n - i + 2 to i - 1 do a[i, j] := 0;

(это если НЕ включать диагонали)
Klubbhead
А если с диагоналями?
Klubbhead
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.

пожалуйста,напишите ,что надо дописать в программу,чтобы обнулились элементы ниже главной и побочной диагоналей,а то у меня не получается
volvo
Тебе уже написали, что надо сделать - ты проигнорировал... Еще раз написать, чтобы ты еще раз проигнорировал? Извини, я этого делать не буду...
Klubbhead
Код
Тебе уже написали, что надо сделать - ты проигнорировал... Еще раз написать, чтобы ты еще раз проигнорировал? Извини, я этого делать не буду...
Да я не проигнорировал, написал в программе выражение
for i := n div 2 to n do
for j := n - i + 2 to i - 1 do a[i, j] := 0;
вроде там где нужно,а программа не обнуляет,числа остаются без изменений.Вот и хотел узнать почему.
Klubbhead
Помучился с прогарммой и получилось! Спасибо Всем за помощь! smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.