IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Двумерный массив. Матрица, Не получается решить!
Klubbhead
сообщение 1.05.2007 18:42
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


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


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. Помогите решить,а то срочно нужно,спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
Артемий
сообщение 1.05.2007 19:00
Сообщение #2


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


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


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Klubbhead
сообщение 3.05.2007 13:34
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Спасибо за помощь первой задачи!! Но вот не пойму как обнулить элементы,стоящие ниже главной и побочной диагонали.
Пробовал так:
 If ((i+j)-1)>N then A[i,j]:=0;
Но както не получается обнулить. Подскажите,как правильно сделать. Спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.05.2007 13:53
Сообщение #4


Гость






  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 10:13
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


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

Сообщение отредактировано: Klubbhead - 7.05.2007 10:13
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Klubbhead
сообщение 7.05.2007 12:42
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  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.

пожалуйста,напишите ,что надо дописать в программу,чтобы обнулились элементы ниже главной и побочной диагоналей,а то у меня не получается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.05.2007 12:46
Сообщение #7


Гость






Тебе уже написали, что надо сделать - ты проигнорировал... Еще раз написать, чтобы ты еще раз проигнорировал? Извини, я этого делать не буду...
 К началу страницы 
+ Ответить 
Klubbhead
сообщение 7.05.2007 13:30
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


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


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской
Реальное имя: Stanislav

Репутация: -  0  +


Помучился с прогарммой и получилось! Спасибо Всем за помощь! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 21:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"