Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 331
1

Пропускает строку ввода

24.10.2018, 08:22. Показов 2295. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте, когда ввожу среднюю оценку, то строку ввода "специальность" (71 строка) пропускает, почему?

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <cstring>
#include <string>
 
using namespace std;
 
class human {
public:
    human() { cout << "const_human" << endl; }
    virtual ~human() { cout << "destr_human" << endl; }
    virtual void print() = 0;
};
 
class student : public human {
    string surname, pol;
    int age, kurs, num_book, med_mark;
public:
    student(string _surname, string _pol, int _age, int _kurs, int _num_book, int _med_mark)
    {
        surname = _surname;
        pol = _pol;
        age = _age;
        kurs = _kurs;
        num_book = _num_book;
        med_mark = _med_mark;
        cout << "constr_student" << endl;
    }
    ~student() { cout << "destr_student" << endl; }
 
    void print() {
        cout << "Фамилия: " << surname << "\nВозраст: " << age << "\nПол: " << pol << "\nКурс: " << kurs << "\nНомер зачётки: " << num_book << "\nСредняя оценка: " << med_mark << endl;
 
    }
 
    void excellent() {
        if (med_mark > 4) { cout << "\nСредняя оценка больше 4 - Отличник\n"; }
        else { cout << "\nСредняя оценка меньше 5 - Не отличник\n"; }
    }
};
 
class prof : public human {
    string special;
    int year_special;
public:
    prof(string _special, int _year_special)
    {
        special = _special;
        year_special = _year_special;
        cout << "constr_prof" << endl;
    }
    ~prof() { cout << "destr_prof" << endl; }
 
    void print() {
        cout << "\nСпециальность: " << special << "\nСрок обучения: " << year_special << endl;
 
    }
};
 
int main() {
    system("chcp 1251");
 
    string surname, pol, special;
    int age, kurs, num_book, med_mark, year_special;
 
    cout << "Введите Фамилию и инициалы: "; getline(cin,surname);
    cout << "Введите возраст: "; cin >> age;
    cout << "Введите пол: "; cin >> pol;
    cout << "Введите курс: "; cin >> kurs;
    cout << "Введите номер зачётки: "; cin >> num_book;
    cout << "Введите среднюю оценку: "; cin >> med_mark;
    cout << "Введите специальность: "; getline(cin, special);
    cout << "Введите срок обучения: "; cin >> year_special;
 
 
    human *p1 = new student(surname, pol, age, kurs, num_book, med_mark);
    p1->print();
    delete p1;
 
    human *p2 = new prof(special, year_special);
    p2->print();
    delete p2;
 
    student *p3 = new student(surname, pol, age, kurs, num_book, med_mark);
    p3->excellent();
    delete p3;
 
    system("pause");
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2018, 08:22
Ответы с готовыми решениями:

Пропускает строку ввода
Пропускает cin.getline(str,99); сразу на _getch(); Подскажите, что делать? #include &lt;iostream&gt;...

После ввода специальности программа пропускает все остальные этапы ввода информации
Написал программу которая выводит учеников с меньше 60ти баллами, но после ввода специальности она...

Пропускает поток ввода cin
Решал задачку из книжки Страуструпа. В общей сложности решил. Но столкнулся с проблемой, после...

Не даёт вводить (пропускает, проходит мимо), после первого ввода
Здравствуйте такая проблема: Надо строку с пробелами записать в массив (всё вроде просто:...

2
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
24.10.2018, 08:28 2
Лучший ответ Сообщение было отмечено koks_ikkkk как решение

Решение

Распространенные ошибки
1
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 331
24.10.2018, 08:52  [ТС] 3
Было:
C++
1
2
3
4
5
6
7
8
cout << "Введите Фамилию и инициалы: "; getline(cin,surname);
    cout << "Введите возраст: "; cin >> age;
    cout << "Введите пол: "; cin >> pol;
    cout << "Введите курс: "; cin >> kurs;
    cout << "Введите номер зачётки: "; cin >> num_book;
    cout << "Введите среднюю оценку: "; cin >> med_mark;
    cout << "Введите специальность: "; getline(cin, special);
    cout << "Введите срок обучения: "; cin >> year_special;
Стало:
C++
1
2
3
4
5
6
7
8
cout << "Введите Фамилию и инициалы: "; getline(cin,surname);
    cout << "Введите возраст: "; cin >> age;
    cout << "Введите пол: "; cin >> pol;
    cout << "Введите курс: "; cin >> kurs;
    cout << "Введите номер зачётки: "; cin >> num_book;
    cout << "Введите среднюю оценку: "; (cin >> med_mark).get();
    cout << "Введите специальность: "; getline(cin, special);
    cout << "Введите срок обучения: "; cin >> year_special;
Спасибо
0
24.10.2018, 08:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2018, 08:52
Помогаю со студенческими работами здесь

Манипулятор ввода, который поочередно то считывает, то пропускает каждые десять символов
Задание звучит так: Вот что я уже сделал: istream&amp; skipchar(istream&amp; stream) { for (int...

При вводе пропускает первую строку
cout&lt;&lt;&quot;\nVvedite text: &quot;; for (int i=0; i &lt; n; i++) { ...

Ввод символов в строку после ввода с клавиатуры
Здравствуйте, задумался вопросом, можно ли как-то ввести произвольные символы в строку, где уже...

Запомнить самую длинную строку и выдать её после окончания работы цикла ввода
2. На вход символьного фильтра подаются строки. Фильтр запоминает самую длинную строку и выдает её...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru