Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
1

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

13.11.2012, 23:31. Просмотров 522. Ответов 9
Метки нет (Все метки)

Передо мной стоит задача - создать программу, которая чем-то похожа на макет гаражного кооператива. Короче, пользователь задает число автомобилей, после чего программа при помощи 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, и, к сожалению, я не знаю, как исправить эту проблему. Кто может чем помочь?
З.Ы.: Вывода данных нету, о них я пока не думал для начала нужно хотя бы с этим справиться
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2012, 23:31
Ответы с готовыми решениями:

Динамический массив new и его структура выделения памяти?
Доброго времени суток, форумчане! Долго искал возможность определения размера динамического...

Структура: Сделать динамический массив структур клиентов банка...
Нужно сделать динамический массив структур клиентов банка, хочу сделать так что бы при каждом...

Динамический массив при наследовании, элементами которого являются объекты класса наследника динамический массив
Попробовал создать динамический массив, у которого элементы - объекты класса динамический массив,...

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

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за кого-то не делают,...

9
Croessmah
++Ͻ
15952 / 9062 / 1746
Регистрация: 27.09.2012
Сообщений: 22,302
Записей в блоге: 2
Завершенные тесты: 2
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;
}
0
kravam
быдлокодер
1714 / 901 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
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;
}
0
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
14.11.2012, 00:15  [ТС] 4
Я знаю, что я пытаюсь ввести данные в "никуда", и я пробовал использовать индекс еще в самом начале, но компилятор говорит, что я что-то делаю неправильно. Насчет динамического массива, то он должен использоваться, ведь в этом вся соль заключается. Я не против бы от него отказаться, но не могу.
0
14.11.2012, 00:15
kravam
быдлокодер
1714 / 901 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
14.11.2012, 00:20 5
Чё ты сказал, я не понял, а к моему коду надо добавить в конце очистку памяти:
C++
1
delete [] mass;
0
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;
}
Но теперь появилась новая проблема цикл не прекращается.. или может это из-за отсутсивя вывода данных..
0
kravam
быдлокодер
1714 / 901 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
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;
}
0
Croessmah
++Ͻ
15952 / 9062 / 1746
Регистрация: 27.09.2012
Сообщений: 22,302
Записей в блоге: 2
Завершенные тесты: 2
14.11.2012, 00:38 8
Цитата Сообщение от kravam Посмотреть сообщение
Croessmah, неправильно
Ваш вариант:
Структура и динамический массив


флаш не везде катит
0
kravam
быдлокодер
1714 / 901 / 106
Регистрация: 04.06.2008
Сообщений: 5,588
14.11.2012, 00:45 9
____________
1
Миниатюры
Структура и динамический массив  
Noobass
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 100
14.11.2012, 19:40  [ТС] 10
оу, сорри, у меня очистка буфера не сразу сработала, и я ее проигнорировал. Я просто библиотеку забыл подключить. длина массива "+1" задал машинально, не подумав. Спасибо большое за помощь
0
14.11.2012, 19:40
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 19:40

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой массив только...

Динамический массив: целое число разложить на массив простых множителей
Доброго времени суток всем. Целое число необходимо разложить на массив простых множителей....


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

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

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