Тема: Массивы, Циклический сдвиг |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Тема: Массивы, Циклический сдвиг |
Dr. Ra |
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Дана задача:
Элементы заданого вектора циклически сдвинуть на К позиций влево. Я программу-то написал, но так и не понял, что значит: сдвинуть циклически. Можете обьяснить? |
volvo |
Сообщение
#2
|
Гость |
Цитата(Dr. Ra @ 12.04.05 18:39) Я программу-то написал, но так и не понял, что значит: сдвинуть циклически. Как же ты программу написал, если не понял, что означает циклический сдвиг? Это, кстати, значит, что при сдвиге влево первый элемент массива становится последним... Было: 123456 К = 2 Стало: 345612 |
Dr. Ra |
Сообщение
#3
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Цитата(volvo @ 12.04.05 19:55) Как же ты программу написал, если не понял, что означает циклический сдвиг? Это, кстати, значит, что при сдвиге влево первый элемент массива становится последним... Было: 123456 К = 2 Стало: 345612 АААА....понятно, а я решил что просто надо из каждого элемента вычесть К чисел. Спасибо! |
FreeMan |
Сообщение
#4
|
- Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: 4 |
Код asm mov ax,chislo ror ax,5 {циклический сдвиг вправо на 5 бит} mov chislo,ax end; -------------------- бб
|
Dr. Ra |
Сообщение
#5
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Цитата(FreeMan @ 12.04.05 20:17) Код asm mov ax,chislo ror ax,5 {циклический сдвиг вправо на 5 бит} mov chislo,ax end; :no: Ничего не разобрал, а что такое mov и ror??? |
volvo |
Сообщение
#6
|
Гость |
Dr. Ra, может Freeman и прав... Можно задание уточнить? Нужно сдвигать циклически сам массив, или его элементы?
Поясню на примере. Есть вектор <1, 2, 3, 4, 5> Можно сдвинуть весь вектор например на 2 позиции влево, и получим вектор <3, 4, 5, 1, 2>. А можно сдвинуть элементы вектора, и получим: <1 сдвинутая на К позиций влево, 2 сдвинутая на К позиций влево, и т.д.> Что имеется в виду? |
Dr. Ra |
Сообщение
#7
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Цитата(volvo @ 12.04.05 22:51) Что имеется в виду? Необходимо, ЭЛЕМЕНТЫ заданого вектора циклически сдвинуть на К позиций влево. Зы. Я попробывал через перестановку чисел в массиве, что-то не очень выходит... |
Dr. Ra |
Сообщение
#8
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Интересно, на меня, что все забили???
|
volvo |
Сообщение
#9
|
Гость |
Ну так Freeman же дал правильное решение... Чем оно не устраивает?
Добавлено: Не нравится ассемблер, тогда вот Паскаль: function rol(x: word; const k: byte): word; |
Dr. Ra |
Сообщение
#10
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: 0 |
Цитата(volvo @ 13.04.05 22:43) Не нравится ассемблер, тогда вот Паскаль: Спасибо, конечно, но вот проблемма - мы еще не прошли процедур и ф-й. Если я сдам задачку в таком виде, препод заподозрит меня в халтуре и то , что задачку не я делал. Можно ли сделать эту задачу без применения процедур??? |
volvo |
Сообщение
#11
|
Гость |
Цитата(Dr. Ra @ 14.04.05 18:58) Можно ли сделать эту задачу без применения процедур??? :yes: Легко... const |
-Павел- |
Сообщение
#12
|
Гость |
Как же ты программу написал, если не понял, что означает циклический сдвиг? Это, кстати, значит, что при сдвиге влево первый элемент массива становится последним... Было: 123456 К = 2 Стало: 345612 А вы не могли бы представить код программы, которая как раз и выполняет сие действо, т.е. 12345->сдвиг при k=2->34512. K должно быть переменным числом. Неделю бьюсь уже, с двумя массивами придумал, всё работает, но препод говорит, что нужно с одним. |
volvo |
Сообщение
#13
|
Гость |
size - размер массива A ...
for i := 1 to K do begin { <--- Проделываем K раз } |
-Павел- |
Сообщение
#14
|
Гость |
size - размер массива A ... for i := 1 to K do begin { <--- Проделываем K раз } Ну что я могу сказать... Мастер, честное слово... Спасибо большое! |
Гость |
Сообщение
#15
|
Гость |
У меня похожая задача. Над сдвинуть циклически вправо. Может кто поможет ? Заранее спасибо.
|
volvo |
Сообщение
#16
|
Гость |
T := a[size]; вместо того, что было... |
Гость |
Сообщение
#17
|
Гость |
пасиб! все работает.
|
Текстовая версия | 29.03.2024 16:15 |