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

Заполнение массива структур, методы cin-а - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
14.04.2012, 23:50     Заполнение массива структур, методы cin-а #1
Задача такая: спроектировать структуру car, в которой хранится название производителя и год выпуска, пользователь вводит количество элементов структуры, с помощью 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
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
const int s = 40;
struct car
{
    char name[s];
    int year;
};
 
int main()
{
    int n;
    cout << "Amount of cars in catalogue: ";
    cin >> n;
    car * ps = new car[n];
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Car # " << i + 1 << ":\nEnter name of producer: ";
        cin.get(ps[i].name, s);
        cout << "\nYear: ";
        (cin >> ps[i].year).get();
    }
 
    cout << "Your collection of cars:\n";
    for (i = 0; i < n; i++)
        cout << ps[i].year << " " << ps[i].name << endl;
    
    delete []ps;
 
    return 0;
}
Не могу разобраться с cin-ом и его вариациями.. Подскажите, пожалуйста, какие методы cin и как правильно использовать в данной задаче? Спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
14.04.2012, 23:52     Заполнение массива структур, методы cin-а #2
строка 24, замените на getline или просто >>
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
14.04.2012, 23:58  [ТС]     Заполнение массива структур, методы cin-а #3
C++
1
2
3
4
5
6
7
for (i = 0; i < n; i++)
    {
        cout << "Car # " << i + 1 << ":\nEnter name of producer: ";
        cin.getline(ps[i].name, s);
        cout << "\nYear: ";
        (cin >> ps[i].year).get();
    }
Нет, не получается..
Миниатюры
Заполнение массива структур, методы cin-а  
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.04.2012, 01:00     Заполнение массива структур, методы cin-а #4
pro_mary http://www.cplusplus.com/reference/i...tream/getline/
аргументы я буду за вас ставить? читайте как вызывается getline
C++
1
getline(тут указатель на строку, тут количество символов)
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
15.04.2012, 16:49  [ТС]     Заполнение массива структур, методы cin-а #5
Прочитала и про аргуманты getline, и про get.. Сделала со строками, все равно не получается..
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
#include "stdafx.h"
#include <iostream>
#include <string>
 
using namespace std;
 
const int s = 40;
struct car
{
    string name;
    int year;
};
 
int main()
{
    int n;
    cout << "Amount of cars in catalogue: ";
    cin >> n;
    car * ps = new car[n];
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Car # " << i + 1 << ":\nEnter name of producer: ";
        getline(cin, ps[i].name);
        cout << "\nYear: ";
        cin >> ps[i].year;
    }
 
    cout << "Your collection of cars:\n";
    for (int i = 0; i < n; i++)
        cout << ps[i].year << " " << ps[i].name << endl;
    
    delete []ps;
 
    return 0;
}
Выводится вообще сразу два предложения о вводе.. Помогите, пожалуйста, разобраться..
Миниатюры
Заполнение массива структур, методы cin-а  
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.04.2012, 18:37     Заполнение массива структур, методы cin-а #6
я же вам написал, а вы зачем то переписали программу, поставили string.
вам надо было всего лишь заменить cin.get на cin.getline
C++
1
cin.getline(ps[i].name, 40);
в свою первую программу это вставьте
pro_mary
1 / 1 / 0
Регистрация: 23.03.2009
Сообщений: 99
15.04.2012, 19:37  [ТС]     Заполнение массива структур, методы cin-а #7
Так я уже пробовала.. Результат ниже..
Миниатюры
Заполнение массива структур, методы cin-а  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2012, 19:49     Заполнение массива структур, методы cin-а
Еще ссылки по теме:

Заполнение массива структур из файла C++
Заполнение динамического массива структур из бинарного файла C++
C++ Заполнение массива структур из .txt файла (файловый ввод/вывод)

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

Или воспользуйтесь поиском по форуму:
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.04.2012, 19:49     Заполнение массива структур, методы cin-а #8
потому что в 18 строке в потоке остался \n, его надо убрать через cin.get, так как это вы сделали в строке 26

Добавлено через 32 секунды
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
#include <iostream>
 
using namespace std;
 
const int s = 40;
struct car
{
    char name[s];
    int year;
};
 
int main()
{
    int n;
    cout << "Amount of cars in catalogue: ";
    (cin >> n).get();
    car * ps = new car[n];
    int i;
 
    for (i = 0; i < n; i++)
    {
        cout << "Car # " << i + 1 << ":\nEnter name of producer: ";
        cin.getline(ps[i].name, s);
        cout << "\nYear: ";
        (cin >> ps[i].year).get();
    }
 
    cout << "Your collection of cars:\n";
    for (i = 0; i < n; i++)
        cout << ps[i].year << " " << ps[i].name << endl;
 
    delete []ps;
 
    return 0;
}
Yandex
Объявления
15.04.2012, 19:49     Заполнение массива структур, методы cin-а
Ответ Создать тему
Опции темы

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