![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
AnTiDoD |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Дана матрица 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 - |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Про рекурсию слышал?
![]() |
AnTiDoD |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Мужской Реальное имя: Алексей Репутация: ![]() ![]() ![]() |
Так-с про рекурсию только слышал - это по-моему когда функция вызывает саму себя?
Но на практике я никогда рекурсию не использовал, потому что не знаю когда ее использовать. Вот сделал без рекурсии, но хотелось бы узнать пример с рекурсией, чтоб понятней было:
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 - |
![]() ![]() |
![]() |
Текстовая версия | 21.04.2025 12:27 |