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

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

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

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


Новичок
*

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

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


помогите составить основной алгоритм для решения задачи
она сформулирована так:
ВВести целое число К, которая является размерностью квадратной матрицы и натуральное число N- исходные данные
Сформировать матрицу и повернуть ее по часовой стрелке на N шагов...

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


?
***

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

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


Цитата
основной алгоритм для решения задачи


берем матрицу, поварачиваем матрицуцу. выводим матрицу))))) good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


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


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

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

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


Цитата(amega @ 16.02.2009 15:48) *
берем матрицу, поварачиваем матрицуцу. выводим матрицу))))) good.gif
amega, юмор без отношения к делу оставь для раздела Юмор mad.gif. Есть что сказать по делу - говори, нет - будь добр, не флуди.


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


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

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

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


Вот поворот матрицы на 90 градусов (это ты называешь шагом?).
Используй ее несколько раз, если нужно.
const
k=4;

var
a,b: array[1..k,1..k]of integer;
i,j: integer;

begin
for i:=1 to k do for j:=1 to k do a[i,j]:=Random(10);
for i:=1 to k do begin
for j:=1 to k do Write(a[i,j]);
WriteLn
end;
WriteLn;

for i:=1 to k do for j:=1 to k do b[i,j]:=a[-j+k+1,i];

for i:=1 to k do begin
for j:=1 to k do Write(b[i,j]);
WriteLn
end;
end.


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


Новичок
*

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

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


спасибо...но не много не то......под шагом тут понимается на сколько символов надо сдвинуть, а не поворот под градусом
то есть к примеру первый a[1,1] при шаге в 1 символ сдвинется на a[2,1], при шаге в 3 символа на a[4,1]...
то есть поворот все же есть...но по другому

Сообщение отредактировано: reboot -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


?
***

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

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


у меня похожее задание было на защите лабы ток там было только по кромке здвинуть...
попробуу обяснить как я зделал:
береш а11 заносиш в буфер, пото опишуеш проход по кромке матрице, и в етом проходе здвигаеш на 1 елемент, и потом вставляеш из буфера на положеное место,
тоесть
Прикрепленное изображение

на рисунке розовоей линией показан проход по кромке а зеленой как здвигать елементы, после прохода а11 поставить на а12(первый рядок второй столбец, я приывик сначала строки писать)
в общем 11 можно задатьь в проходе цыкла от 1 до count/2 и будет здвигатся "каждая кромка"

если нужно здинуть N раз то нужно во те все запустить еще в одном цикле N раз

Сообщение отредактировано: amega -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


Цитата(reboot @ 16.02.2009 18:27) *
спасибо...но не много не то......под шагом тут понимается на сколько символов надо сдвинуть, а не поворот под градусом
то есть к примеру первый a[1,1] при шаге в 1 символ сдвинется на a[2,1], при шаге в 3 символа на a[4,1]...
то есть поворот все же есть...но по другому
Хм.. Извини, но если ты хочешь какую-то нестандартную операцию, то изволь определить ее полностью и детально. И если под словом "дом" ты реально понимаешь гибрид слона со столом, то лучше не трать время тех, кто хочет тебе помочь. Операция "поворот", которую ты упомнинал в первом сообщении:
Цитата(reboot @ 16.02.2009 14:57) *
Сформировать матрицу и повернуть ее по часовой стрелке на N шагов...
- подразумевает (в общепринятом смысле) именно то, что я сделал (хотя слово "шаг" действительно вносит некоторое сомнение относительно того, понимаешь ли ты сам, что спрашиваешь). Твой "поворот" нигде в математике не употребляется. И если тебя не устраивает общепринятый смысл слов - приводи свой "словарь".

amega тебе описал алгоритм, вот его реализация, распространенная с кромки (то есть внешнего слоя) на все слои.
  for i:=1 to k div 2 do begin
b:=a[i,i];
for j:=i to k-i do a[j,i]:=a[j+1,i];
for j:=i to k-i do a[k-i+1,j]:=a[k-i+1,j+1];
for j:=k-i downto i do a[j+1,k-i+1]:=a[j,k-i+1];
for j:=k-i downto i+1 do a[i,j+1]:=a[i,j];
a[i,i+1]:=b
end;


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


Новичок
*

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

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


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


?
***

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

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


Lapp

ты можеш проставить коментарии своего кода


for i:=1 to k div 2 do begin
b:=a[i,i];
for j:=i to k-i do a[j,i]:=a[j+1,i];
for j:=i to k-i do a[k-i+1,j]:=a[k-i+1,j+1];
for j:=k-i downto i do a[j+1,k-i+1]:=a[j,k-i+1];
for j:=k-i downto i+1 do a[i,j+1]:=a[i,j];
a[i,i+1]:=b
end;

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


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

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

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


Цитата(amega @ 21.02.2009 19:05) *
ты можеш проставить коментарии своего кода
Вечером сделаю))


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


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

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

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


Выполняю обещанное)).

 for i:=1 to k div 2 do begin  {цикл по слоям (квадратам), от внешнего к внутреннему}
b:=a[i,i]; {сохраняем левый верхний элемент}
for j:=i to k-i do a[j,i]:=a[j+1,i]; {поэлементно двигаем левую сторону квадрата вверх на одну позицию}
for j:=i to k-i do a[k-i+1,j]:=a[k-i+1,j+1]; {двигаем нижнюю сторону влево}
for j:=k-i downto i do a[j+1,k-i+1]:=a[j,k-i+1]; {двигаем правую сторону вниз}
for j:=k-i downto i+1 do a[i,j+1]:=a[i,j]; {двигаем верхнюю сторону вправо - кроме последнего элемента}
a[i,i+1]:=b {кладем сохраненный элемент во вторую позицию верхней стороны квадрата}
end;


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

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

 





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