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

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

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

 
 Ответить  Открыть новую тему 
> Задача на матрицу.
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Про рекурсию слышал? wink.gif Вот здесь ее и можно использовать - устанавливаешь для начала все элементы матрицы в -1, а потом заданный элемент - нулевым, а соседи - на 1 больше (если старое значение все еще = -1)...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 2.12.2020 4:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name