Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Двумерный массив. Матрица

Автор: Klubbhead 1.05.2007 22:42

Здраствуйте! Не получается решить вот эту задачу: В задаваемой квадратной матрице обнулить элементы, расположенные выше главной и побочной диагоналей. Вроде алгоритм правильный.


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. Помогите решить,а то срочно нужно,спасибо!

Автор: Артемий 1.05.2007 23:00

blink.gif А M разве не Integer???Может тогда A[i,j]?

Автор: Klubbhead 3.05.2007 17:34

Спасибо за помощь первой задачи!! Но вот не пойму как обнулить элементы,стоящие ниже главной и побочной диагонали.
Пробовал так:

 If ((i+j)-1)>N then A[i,j]:=0;
Но както не получается обнулить. Подскажите,как правильно сделать. Спасибо.

Автор: volvo 3.05.2007 17:53

  for i := n div 2 to n do
for j := n - i + 2 to i - 1 do a[i, j] := 0;

(это если НЕ включать диагонали)

Автор: Klubbhead 7.05.2007 14:13

А если с диагоналями?

Автор: Klubbhead 7.05.2007 16:42

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 7.05.2007 16:46

Тебе уже написали, что надо сделать - ты проигнорировал... Еще раз написать, чтобы ты еще раз проигнорировал? Извини, я этого делать не буду...

Автор: Klubbhead 7.05.2007 17:30

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

Автор: Klubbhead 7.05.2007 19:22

Помучился с прогарммой и получилось! Спасибо Всем за помощь! smile.gif