| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Одномерный массив нужно сдвинуть массив циклическ |
| Автор: an18 4.6.2009, 12:22 | ||
| 1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел. 2) Распечатать полученный массив. 3) Удалить первый элемент с заданным значением. 4) Сдвинуть массив циклически на К элементов вправо. 5) Распечатать полученный массив.
Подскажите где тут ошибка в 4-ом действии, программа вместо сдвига массива циклически прописывает в 4 элементе массива цифру 36. |
| Автор: azesmcar 4.6.2009, 12:42 | ||||
| an18 А почему все так сложно?
вот этого достаточно чтобы удалить и сместить элементы.
|
| Автор: an18 4.6.2009, 13:00 | ||
Спасибо за упрощение, но проблема не в этом. После удаления выбранного элемента массива и сдваги части массива на 1 пустую клетку влево нужно провести операцию сдвига всего массива циклически на К элементов вправо. Пробовал написать, но получилось только вот это:
|
| Автор: azesmcar 4.6.2009, 13:03 |
не заметил этого условия...а подробнее можно? что значит сдвинуть вправо? а в первый элемент что записать? 0? Ваша функция не совсем понятно что делает..зачем это if ((arr[i] % 2)==0) нужно для сдвига вправо всего массива? |
| Автор: mrbrooks 4.6.2009, 13:07 |
| я конечно дико извиняюсь - но если речь идет о С++ - возможно есть смысл заюзать алгоритм из STL std::rotate для |
| Автор: azesmcar 4.6.2009, 13:09 | ||
mrbrooks
это похоже на ВС3.1, сомневаюсь что там есть алгоритмы. Плюс - это видимо домашнее задание, так что нужно изобретать велосипеды. |
| Автор: mrbrooks 4.6.2009, 13:13 |
ужос. этого даже уже в музеях нет. скорее кривые костыли |
| Автор: an18 4.6.2009, 13:13 |
| На сколько я понял условие этой задачи, то нужно сдвинуть массив поэлементно на определённое количество элементов вправо. И если не сказано, что К это рандомное число, то значит его нужно вводить вручную. Нехотелось писать функцию, тем более что я в них ещё не очень понимаю. |
| Автор: mes 4.6.2009, 13:48 | ||
т.е не просто сдвинуть вправо, а сдвинуть по кругу, т.е сдвинутые последние станут на место первых. |
| Автор: an18 4.6.2009, 13:49 | ||||
| Да это стандартная задачка 1-го курса на массивы. Подскажите как сделать функцию сдвига на определённое количество элементов вправо. Нужно ведь создать переменную в которой будет храниться временное значение при поочерёдном переставлении элементов? Добавлено через 1 минуту и 8 секунд
собственно говоря, да |
| Автор: mes 4.6.2009, 14:12 | ||
а если воспользоваться поиском ?! попробую поискать за Вас ну вот к примеру : http://forum.vingrad.ru/forum/topic-246005/unread-1/hl/%25D1%2586%25D0%25B8%25D0%25BA%25D0%25BB%25D0%25B8%25D1%2587%25D0%25B5%25D1%2581%25D0%25BA%25D0%25B8%25D0%25B9+%25D1%2581%25D0%25B4%25D0%25B2%25D0%25B8%25D0%25B3+%25D0%25BC%25D0%25B0%25D1%2581%25D1%2581%25D0%25B8%25D0%25B2%25D0%25B0/index.html |
| Автор: an18 4.6.2009, 14:24 |
| Спасибо за подсказку, эту и похожие темы о сдвиге я уже читал вчера, но ничего не понял. Мне эту программу нужно доделать иначе могут исключть из ВУЗа 8-( |
| Автор: mes 4.6.2009, 14:49 | ||||
напрашивается ответ "везде"; т.е во всем 4м действии а по поводу кода для циклического сдвига массива см. примеры из приведенной ссылки.. там их, имхо, более чем достаточно и достаточно простые.
если что то не понятно, так поставьте конкретный вопрос. |
| Автор: an18 4.6.2009, 15:57 | ||
вот уже кое что получается, вот только элементы перенесённые в начало массива становятся -858993460. Что нужно поправить, что бы значения сохранялись при переносе в начало?
|
| Автор: mes 4.6.2009, 16:26 | ||||
Если Вы в реализуете один пункт , зачем выкладывать всю прогу ? Чтоб отнять побольше времени у форумчан, на разглядывание абсолютно левого кода ?! неужто трудно, выделить задачу, отработать ее и потом добавлять в проект, не отвлекаясь самому и не отвлекая других от сути? Добавлено @ 16:32
n - это у Вас максимальный размер массива. А размер "реального" массива arr_size. Из за путаницы этих двух переменных и происходит сдвиг всех 1000 элементов , а не тех что требуется. В остальном эта часть кода вроде правильная. |
| Автор: an18 4.6.2009, 16:53 | ||
Спасибо, действительно после замены программа заработала как нужно.
|