Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сдвинуть элементы массива 
:(
    Опции темы
annushka89
Дата 13.3.2009, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



есть массив, размер его постоянен, в него записываются различные значения, начиная с 0 элемента, например, я записала в массив из 100 элементов только 10, и хочу на пятое место записать еще значачение, как мне оптимально сдвинуть элементы, которые идут после 5 элемента?
PM MAIL   Вверх
mrbrooks
Дата 13.3.2009, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



annushka89, используй std::vector
PM MAIL   Вверх
annushka89
Дата 13.3.2009, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



annushka89, используй std::vector

Это понятно, мне надо по-простому, без STL 
PM MAIL   Вверх
azesmcar
Дата 13.3.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

annushka89, используй std::vector 


при всем уважении, по моему к данной задаче больше подходит std::list smile


annushka89, перемещайте с конца
PM   Вверх
annushka89
Дата 13.3.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



дорогие мальчики, да я понимаю, что это легко реализовать с помощью STL

Я просто думаю как же оптимально это реализовать простым смещением элементов массива, просто копированием что ли?
PM MAIL   Вверх
azesmcar
Дата 13.3.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

Я просто думаю как же оптимально это реализовать простым смещением элементов массива, просто копированием что ли? 


а это не ответ?

Цитата

annushka89, перемещайте с конца 


Добавлено через 4 минуты и 41 секунду
Код

int main()
{
    const int size = 10;
    int arr[size] = {1, 2, 3, 4, 5};

    int last = 2;
    int shiftFrom = 2;

    if ( last < size - 1 )
    {
        for (int i = last; i >= shiftFrom; i --)
        {
            arr[i + 1] = arr[i];
            arr[i] = 0;
        }
    }

    std::copy(arr, arr + 10, std::ostream_iterator<int>(std::cout, " "));
    return 0;
}


примерно так
PM   Вверх
annushka89
Дата 13.3.2009, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



azesmcar, спасибки
PM MAIL   Вверх
Anikmar
Дата 13.3.2009, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



Цитата

annushka89 azesmcar, спасибки 


azesmcar +1
PM MAIL ICQ   Вверх
bsa
Дата 13.3.2009, 14:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



annushka89, если у тебя массив из POD переменных (int, double и пр., т.е. не классы с конструкторами), то можно воспользоваться memmove:
Код
int array[100];
...
memmove(array+6, array+5, sizeof(*array)*(100-6));

PM   Вверх
annushka89
Дата 13.3.2009, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.3.2009

Репутация: нет
Всего: нет



bsa, +1
azesmcar, +1
Anikmar, +1
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0631 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.