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

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

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

 
 Ответить  Открыть новую тему 
> Задание на массивы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


помогите написать программу заполнения массива по принципу (лесенкой):
0   0   0   8   9   0   0   0
0 0 6 7 11 10 0 0
0 4 5 13 12 26 27 0
2 3 15 14 24 25 29 28
1 17 16 22 23 31 30 40
0 18 20 21 33 32 39 0
0 0 19 35 34 38 0 0
0 0 0 36 37 0 0 0


Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Yulyasha @ 29.11.2011 19:58) *
заполнения массива по принципу (лесенкой):

Юля, я не знаю, кто из вас ошибается в постановке условия, но только оно неправильное.
Последний ряд (37, 38, 39, 40) - это никакая не "лесенка"! Я написал программу заполнения _лесенкой_, но только последний ряд она заполняет, конечно, НЕ ТАК. Она на самом деле вообще выходит за границы массива, потому что по лесенке 37 должно стоять на позиции [9,5]. И я не хочу тут выкладывать прогу, которая вылетает по ошибке (и не по моей, а кого-то из вас). Так что ты уточни условие, пожалуйста - тогда поговорим.. yes2.gif

P.S.
чтобы матрица была ровной, создавай ее, пожалуйста, в Блокноте и копируй сюда, а потом окружай тегами CODE. Сейчас я исправил, но в след раз сама давай - Okay?

Добавлено через 16 мин.
Упс!! Сейчас посмотрел повнимательнее картинку, и увидел, что это в ней предусмотрено.. Значит, зря я катил бочку на твоего препа, извиняюсь )). Но ты (бяка) должна была хотя бы упомянуть (словами), что последний ряд отличается от всех остальных..

Ладно, тогда я выложу код smile.gif. Но только - без последнего ряда! Была заказана лесенка - получи лесенку и распишись lol.gif

// код удален, см. ниже исправленный вариант



Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Женский

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


Спасибо огромное и на этом smile.gif ) признаю, виновата
и в дальнейшем учту свои ошибки в оформлении)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(Yulyasha @ 30.11.2011 21:30) *
Спасибо огромное и на этом smile.gif ) признаю, виновата
и в дальнейшем учту свои ошибки в оформлении)

Вау! Редчайшая ситуация: юзер соглашается с критикой и не качает права! smile.gif
Ладно, тогда я тоже признаю свои ошибки: не надо было спойлить обучение хорошего человека и давать ему почти полное решение. А также - продолжу их делать..

Юляша, чтобы сделать заполнение последнего ряда, нужно вставить отдельный цикл (см. ниже). Кроме прочего, я сделал в некотором роде ошибку (заполнение было неправильное для n, не кратным 4). Вот код, в котором все вроде правильно..

{ a stairway to heaven, leading down
by Lapp, forum.pascal.net.ru (forum.pascalnet.ru)
for Yulyasha }

const
n= 14; // even numbers only!

var
a: array[1..n,1..n]of integer;
b,i,j,di,dj,z,count: integer;

procedure Show;
var
i,j: integer;
begin
for i:=1 to n do begin
for j:=1 to n do write(a[i,j]:3);
writeln
end;
end;

begin
i:= n div 2+1;
j:= 1;
di:= 1;
dj:= 0;
z:= 1;
count:= 1;
repeat
// writeln(i:10,j:10,count:10); show;
a[i,j]:= count;
Inc(count);
if (j-i)*z=n div 2 then begin
i:= i+1;
j:= j+1;
z:= -z;
b:= di;
di:= -dj;
dj:= -b
end
else begin
i:= i-di;
j:= j+dj;
di:= z-di;
dj:= z-dj
end
until (i>n) or (j>n);
// filling in the last row (straight)
i:= i+dj;
j:= j-di;
repeat
i:= i-di-dj;
j:= j+di+dj;
a[i,j]:= count;
Inc(count)
until count>n*n div 2+n;
Show;
readln
end.


Успехов тебе. Что неясно - спрашивай.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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