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

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

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

> Массив зиг-загом, Надо пройти массив змейкой.
DarkWishmaster
сообщение 30.01.2011 21:16
Сообщение #1


Бывалый
***

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

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


Привет.
Я пробовал вот таким алгоритмом, но он не пашет.
Надо пройти массив зиг-загом и вывести каждое число на экран.
Например:
INput: 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Output: 13 14 9 5 10 15 16 11 6 1 2 7 12 8 3 4
 
║ i:=n; j:=1;
║ y:=1; x:=-1;
║ write(a[i,j],' ');
║ while (i<>1) and (j<>1) do begin
║ x:=x+2;
║ j:=j+1; write(a[i,j],' ');
║ while (i<>i-x) and (j<>j-x) do begin
║ inc(k);
║ i:=i-k; j:=j-k;
║ write(a[i,j],' ');
║ end;
║ i:=i-1; write(a[i,j],' ');
║ k:=0;
║ inc(y);
║ while (i<>i+y) and (j<>j+y) do begin
║ inc(k);
║ i:=i+k; j:=j+k;
║ write(a[i,j],' ');
║ end;

Изображение вот так.


Сообщение отредактировано: DarkWishmaster - 30.01.2011 21:23
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 2.02.2011 6:24
Сообщение #2


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

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

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


2 DarkWishmaster:
Цитата(DarkWishmaster @ 1.02.2011 20:53) *
у volvo там только для N=4
Цитата(DarkWishmaster @ 1.02.2011 21:18) *
Да нет, если читать N с клавиатуры то бред выводит на экран.
Давай условимся: если программа переделана (хоть немного), то это уже не "у volvo", а у тебя. И означает это только то, что ты не можешь даже полностью рабочую программу немного модифицировать для своих нужд..

Ошибаться у тебя право есть. Для того ты сюда и пришел, чтоб ошибки исправлять. У тебя нет права приписывать свои ошибки другим. Это понятно? mad.gif
Программа volvo прекрасно работает для всех n. Покажи, что ты в ней "наисправлял" - будем разбираться. А то так сказать "у volvo там.." - и ничем не подтвердить - это, знаешь ли, некрасиво.. norespect.gif

2 volvo:
я тоже не удержался и сделал свой вариантик smile.gif. Вряд ли он эффективнее твоего, но в нем только один цикл )). Вота:
const
m= 10;

var
a: array[1..m, 1..m] of integer;
i,j,d,n: integer;

begin
Write('введите размер матрицы (не более ',m,') : ');
ReadLn(n);
for i:=1 to n do begin
for j:=1 to n do begin
a[i,j]:= (i-1)*n+j;
Write(a[i,j]:4)
end;
WriteLn
end;
WriteLn;
// поехали..
i:= n-1;
j:= 0;
d:= 1;
repeat
i:= i+d;
j:= j+d;
if (i>n) or (i=0) or (j>n) or (j=0) then begin
d:= -d;
if j>n then Dec(i) else if i=0 then Inc(j) else if j=0 then Dec(i) else Inc(j) // heart
end
else Write(a[i,j]:4);
until (i<=0) and (j>=n);
readln
end.

Если честно, довольно долго с ним провозился (больше часа в общей сложности). Изюминка - правильно описать разворот. Как это водится, в конце концов он вписался в одну элегантную строчку (сердце)).


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

Сообщений в этой теме


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

 



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