Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2014, 10:07   #1
KaDima28
Пользователь
 
Регистрация: 24.03.2014
Сообщений: 48
По умолчанию "Бесконечный" массив

Есть массив. Я заполняю его числами. Если размер не позволяет всунуть число, он его расширяет.

Цитата:
Это невозможно. Только если не создать новый массив, заполнить его данными, удалить старый и запихнуть данные в новый массив с другой длиной.
Много я таких цитат находил, а вот как сделать так и не нашел. Вот мой код, я понимаю что я там напортачил, так что возможно мало кому понятно.

Функция ReadNumber впихивает данные в массив.

Код:
    int K=2;

void mycopy (int* a,int* b, int blen)
{
    for (int i=0;i<blen-1;i++) {
        b[i]=a[i];
        cout << a[i];
    }
}

int* addElement (int elem, int* a, int index, int& FullLen)
{
    if (index!=FullLen)
        a[index]=elem;
    else
    {
        int* b = new int[index*K];

        mycopy(a,b,index);

        delete[] a;
        a=b;
        int* a = new int[index*K];

        a=b;
 
    }
       return a;
}

int* ReadNumber (int& alen, int* a)
{
    int num=0,i=0,FulLen=alen+=1;

    cin >> num;

    while (num!=0) {
        a=addElement(num,a,i,FulLen);
        i++;
        cin >> num;
    }

    alen=i;
    return a;
}
KaDima28 вне форума Ответить с цитированием
Старый 25.05.2014, 10:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
a=b;
int* a = new int[index*K];

a=b;
Что это и зачем это?
STL использовать не вариант?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.05.2014, 11:13   #3
KaDima28
Пользователь
 
Регистрация: 24.03.2014
Сообщений: 48
По умолчанию

Я правильно понял, нужно подключать дополнительные библиотеки? А можно без них?

Самым древним способом, как описано выше.

Последний раз редактировалось KaDima28; 25.05.2014 в 11:26.
KaDima28 вне форума Ответить с цитированием
Старый 25.05.2014, 13:11   #4
KaDima28
Пользователь
 
Регистрация: 24.03.2014
Сообщений: 48
По умолчанию

Сам решил. Вот код:
Код:
#include <iostream>

using namespace std;

    int K=2;

void mycopy (int* a,int* b, int blen, int num)
{
    for (int i=0;i<blen;i++) {
        b[i]=a[i];
    }
    b[blen]=num;
}

int* addElement (int elem, int* a, int index, int& FullLen)
{
    if (index!=FullLen) {
        a[index]=elem;
        return a;
    }
    else
    {
        int* b = new int[index*K];

        mycopy(a,b,index,elem);

        delete[] a;

        return b;

    }

}

int* ReadNumber (int& alen, int* a)
{
    int num=0,i=0,FulLen=alen+=1;

    cin >> num;

    while (num!=0) {
        a=addElement(num,a,i,FulLen);
        i++;
        cin >> num;
    }

    alen=i;
    return a;
}


int main()
{
    int NumLen=0;
    int* a = new int [NumLen+1];
    a = ReadNumber(NumLen,a);

    for (int i=0;i<NumLen;i++)
        cout << i << " element is " << a[i] << endl;
        
    return 0;
}
KaDima28 вне форума Ответить с цитированием
Старый 25.05.2014, 13:21   #5
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Сообщений: 576
По умолчанию

Хорошо что сам решил.
Но зачем изобретать велосипед, если в языке с++ есть STL.
SAMOUCHKA вне форума Ответить с цитированием
Старый 25.05.2014, 13:34   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от KaDima28 Посмотреть сообщение
Я правильно понял, нужно подключать дополнительные библиотеки? А можно без них?

Самым древним способом, как описано выше.
это не доп библиотека, а часть с++
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04