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

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

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

> Задача на матрицу.
AnTiDoD
сообщение 17.02.2007 16:45
Сообщение #1


Новичок
*

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

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


Дана матрица n*m. С клавиатуры вводятся определенные координаты i-строки и j-столбца. В матрице этому элементы присваивается значение 0, остальные же элементы должны окружать его по возрастанию, например:

2 2 2 2 3
1 1 1 2 3
1 0 1 2 3
1 1 1 2 3.

Т.е. элементы окружают 0 как бы "кольцом", а остальные "кольца" возрастают на 1.

Сообщение отредактировано: AnTiDoD - 17.02.2007 16:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 2)
volvo
сообщение 17.02.2007 16:54
Сообщение #2


Гость






Про рекурсию слышал? wink.gif Вот здесь ее и можно использовать - устанавливаешь для начала все элементы матрицы в -1, а потом заданный элемент - нулевым, а соседи - на 1 больше (если старое значение все еще = -1)...
 К началу страницы 
+ Ответить 
AnTiDoD
сообщение 17.02.2007 17:09
Сообщение #3


Новичок
*

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

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


Так-с про рекурсию только слышал - это по-моему когда функция вызывает саму себя?
Но на практике я никогда рекурсию не использовал, потому что не знаю когда ее использовать.

Вот сделал без рекурсии, но хотелось бы узнать пример с рекурсией, чтоб понятней было:

uses crt;
var
a:array[1..10,1..10] of integer;
i,j,n,x,y,m : integer;
begin
write('n=');
readln(n);
write('m=');
readln(m);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=0;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
write('i=');
readln(x);
write('j=');
readln(y);
a[x,y]:=0;
for i:=1 to n do
for j:=1 to m do
begin
if (i<>x)and(j=y) then
a[i,j]:=abs(i-x);
if (i=x)and(j<>y) then
a[i,j]:=abs(j-y);
if (i<>x) and (j<>y) then
if abs(x-i)>abs(y-j) then
a[i,j]:=abs(x-i)
else a[i,j]:=abs(y-j);

end;

for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;
readkey;
end.


Этот вариант работает.

Сообщение отредактировано: AnTiDoD - 17.02.2007 17:09
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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