Помогите пожалуйста. Массив нужно свернуть в "кольцо". |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Помогите пожалуйста. Массив нужно свернуть в "кольцо". |
Gothar |
31.05.2009 20:07
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Массив целых чисел х[1]... х[п] «свернуть в кольцо» и повернуть вправо на К позиций (К может быть больше п).
Заранне спасибо! Сообщение отредактировано: Gothar - 31.05.2009 22:43 |
Krjuger |
31.05.2009 20:15
Сообщение
#2
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Выложите то что смогли сделать,даже если не работает.Чтоб было видно,что вы пытались хотябы это решить.
|
Gothar |
31.05.2009 20:19
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Выложите то что смогли сделать,даже если не работает.Чтоб было видно,что вы пытались хотябы это решить. Вот что попытался сделать. получается бред program jopa; Сообщение отредактировано: Gothar - 31.05.2009 22:26 |
Client |
31.05.2009 20:48
Сообщение
#4
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Посмотри тут
|
Gothar |
31.05.2009 21:08
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Посмотрел! Всё равно правильно работать не хочет(( Видимо я вообще дурак полный( Сообщение отредактировано: Gothar - 31.05.2009 21:09 |
sheka |
31.05.2009 21:09
Сообщение
#6
|
Я. Группа: Пользователи Сообщений: 809 Пол: Мужской Реальное имя: Саша Репутация: 11 |
2 аll
что означает «свернуть в кольцо»? для чего предназначена процедура Move(A[2], A[i], (size - 1)*Sizeof(integer)); и что за переменные в нее вводятся? расскажите пожалуйста. Сообщение отредактировано: sheka - 31.05.2009 21:10 |
Gothar |
31.05.2009 21:24
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
2 аll что означает «свернуть в кольцо»? для чего предназначена процедура Move(A[2], A[i], (size - 1)*Sizeof(integer)); и что за переменные в нее вводятся? расскажите пожалуйста. Вот что получается! Где косяк! Помогите понять ПОжалуйста! program jopa; Сообщение отредактировано: Gothar - 31.05.2009 22:25 |
Krjuger |
31.05.2009 21:58
Сообщение
#8
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
Ну во первых ты в tmp присваиваеш n а потом первому элементу присваиваеш n,это уже косяк,тебе надо значение н-ого элемента....А во вторых тебе четко написали,как работает процедура movе,а ты что мудриш зачем какие то два цикла???плюс сдвинуть надо вправо,а ты влево двигаеш.И повторить эту операцию надо n-k раз.
|
Gothar |
31.05.2009 22:07
Сообщение
#9
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Ну во первых ты в tmp присваиваеш n а потом первому элементу присваиваеш n,это уже косяк,тебе надо значение н-ого элемента....А во вторых тебе четко написали,как работает процедура movе,а ты что мудриш зачем какие то два цикла???плюс сдвинуть надо вправо,а ты влево двигаеш.И повторить эту операцию надо n-k раз.
косяк тут понял!!!!! Но проблема осталась!!!! При сдвиге на 1 он не сдвигает! При 2х на 1! и т.д. Да и к тому же не читает сдвиги выше 5ти! тоесть условие задания (k может быть больше n) не выполняется! |
Client |
31.05.2009 22:12
Сообщение
#10
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
for k:=1 to n1 do begin //n1-это сколько сдвигов |
Gothar |
31.05.2009 22:21
Сообщение
#11
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
for k:=1 to n1 do begin //n1-это сколько сдвигов Блин((( Я запутался!!!!!! Тоесть надо вместо процедуры for j:=1 to n-k do Надо for j:=1 to k do ТАК? Сообщение отредактировано: Gothar - 31.05.2009 22:25 |
volvo |
31.05.2009 22:23
Сообщение
#12
|
Гость |
Лучше - так:
// k = число сдвигов, n = размер массива , чтоб не делать заведомо лишнее... Автору: как ты думаешь, Правила тебя не касаются? Мало того, что тема названа не пойми как, еще и тегами не пользуешься... В следующий раз такая тема сразу улетит в мусорку. А чтоб не улетела сейчас - исправляй... |
Gothar |
31.05.2009 22:28
Сообщение
#13
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Автору: как ты думаешь, Правила тебя не касаются? Мало того, что тема названа не пойми как, еще и тегами не пользуешься... В следующий раз такая тема сразу улетит в мусорку. А чтоб не улетела сейчас - исправляй... Исправил! Спасибо за предупреждение! Редко на форумах бываю просто |
Client |
31.05.2009 22:30
Сообщение
#14
|
Профи Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация: 20 |
Цитата Исправил! Еще и название темы |
Gothar |
31.05.2009 22:32
Сообщение
#15
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Лучше - так: // k = число сдвигов, n = размер массива , чтоб не делать заведомо лишнее... Автору: как ты думаешь, Правила тебя не касаются? Мало того, что тема названа не пойми как, еще и тегами не пользуешься... В следующий раз такая тема сразу улетит в мусорку. А чтоб не улетела сейчас - исправляй... Впринципе сдвигает нормально. с одним но! k не может быть больше n!!!!! виснет! Как быть? Добавлено через 2 мин. Еще и название темы А как? |
volvo |
31.05.2009 22:36
Сообщение
#16
|
Гость |
Цитата А как? Редактировать первое сообщение...Цитата k не может быть больше n!!!!! виснет! Неправда, проверял на k = 8, n = 5, работает прекрасно... |
Krjuger |
31.05.2009 22:37
Сообщение
#17
|
Профи Группа: Пользователи Сообщений: 652 Пол: Мужской Реальное имя: Алексей Репутация: 20 |
А что есть сдвиг на К при К больше N??По сути это сдвиг на разность К и N,просто делаеш условие,если к меньше N оставляеш то что было,если больше то чуть чуть изменяеш и вуаля...
Вольво а у меня вопрос о приотитете действий. Цитата for i := 1 to k mod n do begin если к меньше n,то получается мы сдвигаем на остаток дробной части чтоли?И или не нужны ли скобки при к mod n или они чисто формальны в данном случае(? Сообщение отредактировано: Krjuger - 31.05.2009 22:42 |
Gothar |
31.05.2009 22:41
Сообщение
#18
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
|
volvo |
31.05.2009 22:41
Сообщение
#19
|
Гость |
Krjuger в первую очередь, а с ним и все остальные: ВНИМАТЕЛЬНО смотрим на ответы, которые появляются в теме: там MOD не для красоты, между прочим... Я надеюсь, объяснять, как работает MOD не надо? Какие, блин, условия еще придумали? Запустите компилятор уже, и проверьте, а не ДОГАДЫВАЙТЕСЬ...
Добавлено через 2 мин. Цитата не нужны ли скобки при к mod n Нет, скобки не нужны, приоритет ни при чем. Приоритет важен, когда в выражении больше одной операции, а здесь она всего одна... |
Gothar |
31.05.2009 22:45
Сообщение
#20
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Название темы изменено!)
Вот итоговый код программы: program jopa; Всем спасибо огромное! Сообщение отредактировано: Gothar - 31.05.2009 22:45 |
Текстовая версия | 25.04.2024 23:15 |