Квадратная матрица |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Квадратная матрица |
Pautina |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: 0 |
Доброго времени суток! очень нужна ваша помощь. Помогите решить задачу.
Начиная с центра. обойти по спирали все элементы квадратной матрицы размером 13х13 (распечатывая их в порядке обхода). Заранее огромное спасибо! |
Tan |
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 559 Пол: Мужской Реальное имя: Бруно Репутация: 10 |
Поиск, подобное задание есть.
-------------------- Цитата Imagination is more important than knowledge. Albert Einstein |
St@senk@ |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
Я попытался найти, но не нашел. Вот мое решение, проверял на таблице 5 на 5, но должно и на 13 на 13 работать.
Код program Project2; {$APPTYPE CONSOLE} uses SysUtils; const xl = 13; yl = 13; var ar : array [1..xl,1..yl] of integer; var arr : array [1..xl,1..yl] of boolean; var dir : integer; var x,y,i,j : integer; label CS; begin for i:= 1 to yl do begin for j:= 1 to xl do begin ar[j,i]:=(i-1)*xl+j; arr[j,i]:=false; end; end; x:=1; y:=1; dir:=0; repeat arr[x,y]:=true; write(ar[x,y],' '); CS: case dir of 0:if (x=xl) or arr[x+1,y] then begin dir:=1; goto CS; end else inc(x); 1:if (y=yl) or arr[x,y+1] then begin dir:=2; goto CS; end else inc(y); 2:if (x=1) or arr[x-1,y] then begin dir:=3; goto CS; end else dec(x); 3:if (y=0) or arr[x,y-1] then begin dir:=0; goto CS; end else dec(y); end; until (y=(yl div 2)+1) and (x=(xl div 2)+1); readln; { TODO -oUser -cConsole Main : Insert code here } end. Сообщение отредактировано: St@senk@ - -------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
Алена |
Сообщение
#4
|
Гость |
St@senk@, задание было:
Цитата Начиная с центра. обойти по спирали А у тебя - как раз с левого верхнего угла вниз, и к центру начинается... |
St@senk@ |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
Если я приведу полностью работающий код, то не будет обучательного процесса.
Сообщение отредактировано: St@senk@ - -------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
Алена |
Сообщение
#6
|
Гость |
А ты и так привел нерабочий код. Во всяком случае, у тех, кто попробует его скомпилировать в TP, будут проблему... А на будущее - начни процесс обучения с себя (например, с использования поиска, я насчитала сейчас там по меньшей мере 10 вариантов решения задачи).
|
St@senk@ |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
с поиском, согласен, искать совсем не умею.
Спойлер (Показать/Скрыть)
вот код проверенный и работающий, но помоему для человека от этого толку будет мало. -------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
Pautina |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: 0 |
В поиске не смогла ничего найти..
|
Pautina |
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: 0 |
Так и не смогла понять, в чем смысл данной проги.. В результате ее работы на экране появилась непонятная мне последовательность цифр:
85 84 97 98 99 86 73 72 71 70 83 96 109 110 111 112 113 100 87 74 61 60 59 58 57 56 69 82 95 108 121 122 123 124 125 126 127 114 101 88 75 62 49 48 47 46 45 44 43 42 55 68 81 94 107 120 133 134 135 136 137 138 139 140 141 128 115 102 89 76 63 50 37 36 35 34 33 32 31 30 29 28 41 54 67 80 93 106 119 132 145 146 147 148 1 49 150 151 152 153 154 155 142 129 116 103 90 77 64 51 38 25 24 23 22 21 20 19 1 8 17 16 15 14 27 40 53 66 79 92 105 118 131 144 157 158 159 160 161 162 163 164 165 166 167 168 169 156 143 130 117 104 91 78 65 52 39 26 13 12 11 10 9 8 7 6 5 4 3 2 1 Прикрепленные файлы Z1.PAS ( 1.16 килобайт ) Кол-во скачиваний: 268 |
St@senk@ |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
скажи честно, ты хоть взглянула на код? Думаю, если ты на него чуть-чуть посмотришь, то тебе станет понятно, что это за последовательность.
Спойлер (Показать/Скрыть)
-------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
-Pautina- |
Сообщение
#11
|
Гость |
Конечно,смотрела.. если не заметил, там даже файл прикрепленный с прогой есть.. только вот почему-то работает она совершенно по-другому, нежели у тебя..
|
St@senk@ |
Сообщение
#12
|
Новичок Группа: Пользователи Сообщений: 48 Пол: Мужской Реальное имя: Максим Репутация: 1 |
Работает она так же как и у меня.
Вот тут мы заполняем матрицу.
Вот так мы будем её считывать с клавиатуры. А дальше
Это сам обход матрицы Код for i:=1 to xl*yl do write(posl[i],' '); Это выпечатывание элементов том порядке, в котором тебе нужно. -------------------- Три пути ведут к знанию: путь размышления - это путь самый благородный, путь подражания - это путь самый легкий и путь опыта - это путь самый горький.
Конфуций |
Pautina |
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: 0 |
а не мог бы ты прикрепить саму прогу?
|
Pautina |
Сообщение
#14
|
Новичок Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: 0 |
Попробовала написать по-другому.. но все равно есть проблемы.. подскажите пожалуйста. На вас одна надежда
Прикрепленные файлы Z1.PAS ( 1.16 килобайт ) Кол-во скачиваний: 279 |
volvo |
Сообщение
#15
|
Гость |
const Порядок обхода из центра: влево, вниз, вправо, вверх... Если надо по-другому, меняй направления в цикле repeat/until ... В начале распечатывается матрица, чтобы можно было проверить правильность работы программы... |
@лё][@ |
Сообщение
#16
|
Гость |
Всё-таки порядок обхода в выше написанной программе: из центра влево, вниз, вправо, вверх... Правда программист мог сидеть и спиной к монитору Спасибо этому программисту, мне его программа тоже пригодится
|
Текстовая версия | 4.10.2024 19:12 |