13 / 18 / 6
Регистрация: 02.05.2018
Сообщений: 545
|
|
1
|
Происходит зацикливание
28.10.2018, 13:06. Показов 954. Ответов 1
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
| #include <iostream>
#include <string>
#include <windows.h>
#include <list>
#include <iterator>
using namespace std;
class Student
{
private:
string fio; // Фамилия ученика
int gender; // Пол ученика
double mass; // Масса ученика
double growth; // Рост ученика
bool init( double Mass, double Growth, string Fio, int Gender ) // Проверка исходных данных
{
if ( (Mass < 0.0 || Mass == 0.0) || (Growth < 0.0 || Growth == 0.0) || (Gender < 1 || Gender > 2) )
return false;
else
{
fio = Fio;
gender = Gender;
mass = Mass;
growth = Growth;
return true;
}
};
public:
void Read(int&); // Ввод исходных данных: ФИО, масса, рост
void Display(); // Вывод данных на экран
double AvarageMass(); // Вычисление средней массы учеников
double AvarageGrowth(); // Вычисление среднего роста учеников
double MaksGrowth(); // Нахождение самого высокого роста
};
void Student::Read(int&Numbers) // Реализация метода вне класаа
{
double Mass = 0.0, Growth = 0.0;
string Fio = " ";
int Gender = 0;
list <string> Gournal; // Список учеников
list <double> StudentMass; // Список масс учеников
list <double> StudentGrowth; // Список роста учеников
int i = 0; // просто итератор
while ( i < Numbers )
{
do // Цикл для ввода данных
{
cout << "............................................." << endl;
cout << "ВВОДИТЬ ТОЛЬКО КОРРЕКТНЫЕ ДАННЫЕ!!!" << endl;
cout << "............................................." << endl;
cout << "Выберите пол: 1 - мужской, 2 - женский: "; cin >> Gender;
cout << "Введите ФИО ученика (цы): "; getline(cin,Fio);
cout << "Введите массу ученика: "; cin >> Mass;
cout << "Введите рост ученика: "; cin >> Growth;
} while (!init(Mass,Growth,Fio,Gender)); // Происходит проверка правильности данных
i++;
};
}
void Student::Display() // Реализация метода вне класса
{
cout << "......................................." << endl;
cout << "ФИО ученика (цы): " << fio << endl;
cout << "Масса ученика: " << mass << endl;
cout << "Рост ученика: " << growth << endl;
}
void NumberStudents(int&Number) // Функция для ввода и проверки количества учеников
{
int Numbers;
do // Цикл для правильного ввода
{
cin >> Numbers;
} while (Numbers <= 0);
Number = Numbers; // Присваем переменной Numbers в main Number (правильное количество учеников);
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
cout << "Введите количество учеников: ";
int Numbers; // количество учеников
NumberStudents(Numbers); // Вызовфункции для ввода количества учеников
Student a;
a.Read(Numbers);
a.Display();
return 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
| void Student::Read(int&Numbers) // Реализация метода вне класаа
{
double Mass = 0.0, Growth = 0.0;
string Fio = " ";
int Gender = 0;
list <string> Gournal; // Список учеников
list <double> StudentMass; // Список масс учеников
list <double> StudentGrowth; // Список роста учеников
int i = 0; // просто итератор
while ( i < Numbers )
{
do // Цикл для ввода данных
{
cout << "............................................." << endl;
cout << "ВВОДИТЬ ТОЛЬКО КОРРЕКТНЫЕ ДАННЫЕ!!!" << endl;
cout << "............................................." << endl;
cout << "Выберите пол: 1 - мужской, 2 - женский: "; cin >> Gender;
cout << "Введите ФИО ученика (цы): "; getline(cin,Fio);
cout << "Введите массу ученика: "; cin >> Mass;
cout << "Введите рост ученика: "; cin >> Growth;
} while (!init(Mass,Growth,Fio,Gender)); // Происходит проверка правильности данных
i++;
};
} |
|
Если убрать getline и написать cin >> Fio, то все работает
Добавлено через 16 минут
...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|