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

Структура и динамический массив - C++

Восстановить пароль Регистрация
 
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
13.11.2012, 23:31     Структура и динамический массив #1
Передо мной стоит задача - создать программу, которая чем-то похожа на макет гаражного кооператива. Короче, пользователь задает число автомобилей, после чего программа при помощи new создает динамический массив из этих структур. После пользователю предлагается ввести данные об его автомобилях, и потом все это должно быть выведено на экран.
Вот что у меня пока получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
struct car  {
    char name[15];
    int year;
};
int main()
{
    int i;
    cout<<"How many cars do you wish to catalog? ";
    int col;
    cin>>col;
    car *mass=new car[col+1];
    for(i=0;i<col;i++)  {
        cout<<"Please enter the make: ";
        cin.get(mass->name,15);
        cin.get();
        cout<<"Please enter the year made: ";
        cin>>mass->year;
    }
    system("pause");
    return 0;
}
программа запускается, но не дает возможности ввести данные. Я практически уверен, что это из-за того, что я неправильно определил операторы cin, точнее, в них нет конкретной ячейки, куда вводить данные, а просто mass, и, к сожалению, я не знаю, как исправить эту проблему. Кто может чем помочь?
З.Ы.: Вывода данных нету, о них я пока не думал для начала нужно хотя бы с этим справиться
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 23:31     Структура и динамический массив
Посмотрите здесь:

Можно ли в классе создавать массив переменной длинны. Например динамический массив? C++
Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла C++
динамический массив (Целое число разложить на массив простых множителей) C++
C++ Динамический массив строк (считать с файла строки и поместить их в динамический массив строк)
Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
13.11.2012, 23:57     Структура и динамический массив #2
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
#include <iostream>
using namespace std;
 
#define clearcin while(std::cin.get()!='\n')
 
struct car  {
    char name[15];
    int year;
};
int main()
{
    int i;
    cout<<"How many cars do you wish to catalog? ";
    int col;
    cin>>col;
     clearcin;
    car *mass=new car[col+1];
    for(i=0;i<col;i++)  {
        cout<<"Please enter the make: ";
        cin.get(mass->name,15);
        cin.get();
        cout<<"Please enter the year made: ";
        cin>>mass->year;
          clearcin;
    }
    system("pause");
    return 0;
}
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.11.2012, 00:11     Структура и динамический массив #3
Croessmah, неправильно
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <stdio.h>
using namespace std;
struct car  {
    char name[15];
    int year;
};
int main()
{
    int i;
    cout<<"How many cars do you wish to catalog? ";
    int col;
    cin>>col;
    
    //Зачем?
    //car *mass=new car[col+ 1];
    car *mass=new car[col];
 
    for(i=0;i<col;i++)  {
        cout<<"Please enter the make: ";
        
        //НЕ вводится у тебя потому, что в буфере консоли какаой-то символ уже
        //есть. Очисти буфыер консоли такой командой                          
        fflush (stdin);
 
        //неправильно; mass каждый раз в цикле указывает на один и тот же 
        // car- на нулевой. Поэтому ты просто каждый раз будешь прописывать
        //данные в нулевой элемент вот и всё. 
        //cin.get(mass->name,15);
 
        
        cin.get(mass[i].name,15);
        cin.get();
        cout<<"Please enter the year made: ";
 
        //Если всё-таки хочешь писать без индексов, то надо вот так:
        //cin>>mass++->year;
        //И по выходу из цикла кто-что сделать надо
        
        cin>>mass[i].year;
    }
    //Вот ещё что надо сделать по вызоду из цикла, если работаешь без индексов
    //mass-=i;
 
    for(i=0;i<col;i++)  {
        cout<<mass[i].name<<endl;
        cout<<mass[i].year<<endl;
    }
 
 
 
 
    getchar ();
    getchar ();
    return 0;
}
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
14.11.2012, 00:15  [ТС]     Структура и динамический массив #4
Я знаю, что я пытаюсь ввести данные в "никуда", и я пробовал использовать индекс еще в самом начале, но компилятор говорит, что я что-то делаю неправильно. Насчет динамического массива, то он должен использоваться, ведь в этом вся соль заключается. Я не против бы от него отказаться, но не могу.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.11.2012, 00:20     Структура и динамический массив #5
Чё ты сказал, я не понял, а к моему коду надо добавить в конце очистку памяти:
C++
1
delete [] mass;
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
14.11.2012, 00:26  [ТС]     Структура и динамический массив #6
Вот, ознакомься пожалуйста, я попробовал по своему исправить:
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
#include <iostream>
using namespace std;
struct car  {
    char name[15];
    int year;
};
int main()
{
    int i;
    cout<<"How many cars do you wish to catalog? ";
    int col;
    col=cin.get();
    cin.get();
    car *mass=new car[col+1];
    for(i=0;i<col;i++)  {
        cout<<"Please enter the make: ";
        cin.get(mass[i].name,15);
        cin.get();
        cout<<"Please enter the year made: ";
        cin>>mass[i].year;
        cin.get();
    }
    system("pause");
    return 0;
}
Но теперь появилась новая проблема цикл не прекращается.. или может это из-за отсутсивя вывода данных..
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.11.2012, 00:37     Структура и динамический массив #7
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
38
39
40
41
#include <iostream>
#include <stdio.h>
using namespace std;
struct car  {
    char name[15];
    int year;
};
int main()
{
    int i;
    cout<<"How many cars do you wish to catalog? ";
    int col;
 
//Это фигня
//    col=cin.get();
//    cin.get();
 
    cin>> col;
     
    //Я тебя второй раз спрашиваю- зачем ты делаешь массив на единицу больше нужного?!
    //car *mass=new car[col+1];
 
    car *mass=new car[col];
    
    for(i=0;i<col;i++)  {
        
        //Я для кого очистку буфера писал?!
        fflush (stdin);
        
        cout<<"Please enter the make: ";
        cin.get(mass[i].name,15);
        cin.get();
        cout<<"Please enter the year made: ";
        
        cin>>mass[i].year;
        
        //Лишнеепотому, чт ты число вводишь 
        //cin.get();
    }
    return 0;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11840 / 6819 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
14.11.2012, 00:38     Структура и динамический массив #8
Цитата Сообщение от kravam Посмотреть сообщение
Croessmah, неправильно
Ваш вариант:
Структура и динамический массив

флаш не везде катит
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
14.11.2012, 00:45     Структура и динамический массив #9
____________
Миниатюры
Структура и динамический массив  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 19:40     Структура и динамический массив
Еще ссылки по теме:

Написать функцию принимающую массив и возвращающую указатель на динамический массив C++
Заполнить динамический массив из файла и записать массив обратно в файл C++
C++ Массив и память. Как создать динамический массив?

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

Или воспользуйтесь поиском по форуму:
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
14.11.2012, 19:40  [ТС]     Структура и динамический массив #10
оу, сорри, у меня очистка буфера не сразу сработала, и я ее проигнорировал. Я просто библиотеку забыл подключить. длина массива "+1" задал машинально, не подумав. Спасибо большое за помощь
Yandex
Объявления
14.11.2012, 19:40     Структура и динамический массив
Ответ Создать тему
Опции темы

Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru