Одномерный Массив. Добавить K Элементов, Начиная С Номера N

Тема в разделе "C/C++/C#", создана пользователем Pro100xXx, 20 янв 2013.

  1. Pro100xXx

    Pro100xXx New Member

    Регистрация:
    20 янв 2013
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте, Нужно добавить K элементов, начиная с номера N в одномерном массиве. Я не могу придумать способа как вставить элементы в массив!
    Использую С++ Microsoft Visual studio 2012
    Подайте идею. С помощью чего начать?

    Вот начал делать. Но пока что тут только рандомный массив и элементы:

    Код (C++):
    #include "stdafx.h"
    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    #include <ctime>
    using namespace std;

    int main ()
    {
    setlocale (0,"rus");
    cout << "Лабораторная работа № 5"<<endl;
    cout << "Добавить К элементов, начиная с номера N."<<endl;
    int N,E, i=0,n,k,p, d;

    cout << "Введите количество элементов K"<<endl;
    cin>>k;
    cout << "Введите номер N"<<endl;
    cin>>n;
    cout << "\nВведите количество элементов массива: ";
    cin>>N; int *arr; arr=new int[N]; cout << endl;
    srand(time(0));
    cout<<"Массив: "<<endl;
    for (int i = 0; i<N; i++) {arr[i] = rand()%100; cout<< arr[i] << " ";}
    cout<<endl;
    cout<<"\nk: "<<endl;
    for (int p = 0; p<k; p++)
    {
    E=rand()%100;
    cout<< E <<" ";}




    cout<<endl;
    system("pause");

    }
    ps прошу не смотреть на строку int N,E, i=0,n,k,p, d; из-за неиспользованных локальных переменных, знаю многим это не нравится :)
    Просто приходили идеи, пытался реализовать, потом понимал что это полная чипуха

    Заранее всем спасибо!
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    отформатируй нормально код.
    Ты не сможешь так хитро *вставить* элемент в массив, чтобы его размер увеличился.

    Ты выделил память под N элементов, значит в массиве будет только N элементов. Хочешь больше?
    - можешь выделить с запасом
    - можешь удалить старый массив, и создать новый, большего размера

    Добавлено: а можешь комбинировать - выделяешь с запасом. но когда запас кончился - создаешь новый массив (опять с запасом)
    всякие std::vector так и работают

    Добавлено: или тебе вообще не понятно как элемент в массив вставить?
    если вставляешь в определенную позицию (пусть pos), то сдвигаешь на 1 элемент все что "справа" от pos и затем пишешь новый элемент на место array[pos]
    лучше отдельно обрабатывать вставку в конец.

    если же запас, который ты задал при создании массива закончился:
    создаешь новый массив, копируешь в него pos-1 элемент, вставляешь новый элемент в позицию pos и затем, дописываешь оставшиеся N-pos элементов
    удаляешь старый массив
     
  3. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    это не паскаль объявлять все переменные в одном месте
    лучше объявлять по мере необходимости,ну не суть)

    пусть есть массив a размера size (K+N<size)

    Код (C++):
    //
    for(int i=K;i<K+N;++i)
    cin>>a[i];
    //
     
  4. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    почему? - если есть ссылка - то лучше ее тут написать.
     
  5. Whatka

    Whatka Well-Known Member

    Регистрация:
    9 окт 2011
    Сообщения:
    433
    Симпатии:
    4
    ссылки нет,но это значительно упрощает чтение и отслеживание переменных
    + иногда сокрашет область видимости переменных
     
  6. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    область видимости да, и это единственный аргумент ИМХО.

    Но если ты называешь переменную не i, n, j, a, b, num, t, tmp и некоторые другие распространенные имена временных переменных - то проблем с именами не возникает и резона сужать область видимости ИМХО нет.

    А "чтение и отслеживание переменных" как раз упрощает их объявление в одном месте (естественно в начале функции, мы ведь только о функциях сейчас говорим?). Там же их удобно прокоментировать.

    Это мое субъективное мнение. Ссылки у меня тоже нет )
     
Загрузка...
Похожие Темы - Одномерный Массив Добавить
  1. vbnoob
    Ответов:
    1
    Просмотров:
    954
  2. LifeT
    Ответов:
    1
    Просмотров:
    1.208
  3. Crock95
    Ответов:
    0
    Просмотров:
    1.277
  4. Dexet
    Ответов:
    1
    Просмотров:
    1.392
  5. dambaldor30
    Ответов:
    1
    Просмотров:
    1.145

Поделиться этой страницей