Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
YURAN89
1 / 1 / 0
Регистрация: 04.12.2008
Сообщений: 19
#1

Как добавить элемент в динамический массив? - C++

28.11.2009, 12:35. Просмотров 3223. Ответов 1
Метки нет (Все метки)

Всем привет. У меня такая проблема:

Написал класс avto, в нем данные об автомобиле.Моя задача создать массив таких классов изначально задав размерность этого массива. Данная программа должна осуществлять следующее:
1. Вывод всего списка автомобилей.
2. Поиск по марке автомобиля.
3. Возможность добавления нового автомобиля( нового класса с данными об автомобиле в список).

И так первые 2 пункта я сделал, а вот как добавить новый элемент в массив увеличив исходную размерность я не могу додуматься...

вот моя функция main():

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void main() 
{
int n,i,z;
 
avto *spis;
cout<<"vvedite kolvo mashin :"<< endl;
cin>>n;
spis=new avto [n];
for( i = 0; i < n; i++) 
{
      cout << "==============================" << endl;
      spis[i].zapolnenie();
}
 
do {
    cout<<"-*-*-*-*-*-*-*-*--*-*-*-*-*-*-*-*-*-*-*"<< endl;
    cout<<"1-vivesti vesi spisok; 2-naiti marku; 3-dobaviti mashinu; 0-vihod."<< endl;
    cin>>z;
        vibor(z,spis,n);
}while (z!=0);
}

вот функция вывода всего списка и поиска по марке (добавление элемента я тоже попытался сделать здесь ) :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
void vibor(int z,avto *spis,int n)
{
//  avto *sps;
    char s[10];
    int i,r=0,g=0;
if (z==1)
    {   int y=g+n;
         for( i = 0; i < y; i++) 
         {
            spis[i].show();
         }
    }
else
{
     if (z==2)
     {
         cout<<"Vvedite marku mashini : "<< endl;
                 cin>>s;
          for( i = 0; i < n; i++)
          {
              if (strcmp(spis[i].m(),s)==0)
              {
                  spis[i].show();r++;
              }
          }
          if (r==0)  cout<<endl<<"Net takoi marki v nashem salone!"<<endl<<endl;
     }
//добавление нового элемента
     else
     {
         g++;
         spis=new avto [n+1];
         cout << "==============================" << endl;
         spis[n].zapolnenie();
     }      
}
}
сам класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct data
{
    int den,mes,god;
};
 
class avto
{
private:
    char marka[20];//марка машины
    char cvet[15];   //цвет машины
    int s_num;        //серийный номер
    int reg_num;     //регистрационный номер
    int dver;           // кол-во дверей
    int price;           //цена
    data data_reg;   //дата регистрации
    
    public:
          void zapolnenie();   // заполнение данными
          void show();            //вывод данных
          char* m();              //возвращает марку
          char* c();                //возвращает цвет
          int s_n();                 //возвращает серийный номер
          int r_n();                 //  возвращает рег-й номер
          int d();                    //возвращает кол-во дверей
          int p();                    //возвращает цену
 
          
};
Я знаю что не верно организовываю добавление элемента, может кто-нибудь разберется как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2009, 12:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как добавить элемент в динамический массив? (C++):

Как добавить элемент с заданным номером в динамический массив? - C++
Добавить элемент с заданным номером в динамический массив. Как это сделать?

Как добавить строку в динамический массив? - C++
Уважаемые форумчане подскажите как добавить строку в двумерный динамический массив - в нижнюю его часть? Есть два кода - один: ...

Как добавить новое значение в одномерный динамический массив? - C++
При создании динамического массива и добавления нового значение, значение куда-то теряется. Кусок кода: void set_new_value (int...

Динамический двусвязный список (операции: добавить элемент после данного, удалить данный элемент …) - C++
реализовать Динамический двусвязный список (операции: добавить элемент после данного, удалить данный элемент …). используя: class List...

как в динамический массив добавить еще одну ячейку памяти? - C++
Всем привет! как в динамический массив добавить еще одну ячейку памяти? То бишь имеется какой нибудь динамический массив a и надо чтоб...

Как в динамический массив вставить элемент? - C++
Задание: Дан массив целых чисел размера n. Вставить в массив заданное число перед последним отрицательным элементом ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
niXman
Эксперт C++
3134 / 1446 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
28.11.2009, 12:41 #2
std::vector<avto> spis;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2009, 12:41
Привет! Вот еще темы с ответами:

Как вставить элемент в динамический массив? - C++
Подскажите, как нормально реализовать функцию для вставки элемента в динамический массив? Ибо у меня элемент вставляется, но выводится...

Как прочесть несколько слов из файла в динамический массив char и добавить новое значение в конец? - C++
Никак не могу разобраться. Есть текстовый файл в виде: 3 Mop floor Clean windows Mow lawn цифра 3 это количесво...

Как передвигать указатель чтобы выделить память под новый элемент и добавить новый элемент в массив? - C++
Допустим есть некое условие,нам нужно при каждом его выполнении выделить память под новый элемент и добавить его в массив. Вопрос:Как...

Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла - C++
задача: передать динамический массив в функцию, и записать в каждый элемент строку из файла. количество строк известно вот что у меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru