Привет, у меня неизвестная проблема с getline(). Моя программа должна выводить подсказку, а затем getline() должна считывать пользовательский ввод, но по какой-то причине каждый раз, когда я запускаю, она просто выдает подсказку и переходит к следующей подсказке, не позволяя мне ничего вводить. Я опубликую код и, надеюсь, вы, ребята, можете дать несколько советов.
int main()
{
int students = 0;
students = getStudents(students);
int quizzes = 0;
quizzes = getQuizzes(quizzes);
string studentArray[50];
int* quizArray = new int[quizzes];
double* studentAverage = new double[students];
string studentName = "";
for(int i = 0; i < students; i++)
{
cout << "Enter the students name: ";
getline(cin, studentName);
studentArray[i] = studentName;
cout << studentName;
for(int j = 0; j < quizzes; j++)
{
cout << "Enter quiz " << j+1 << ":";
cin >> quizArray[j];
}
studentAverage[i] = calculateAvergage(quizArray,quizzes);
cout << studentArray[i];
cout << studentName;
}
cout << endl;
cout << "Student Quiz Average" << endl << endl;
cout << "---------------------------------" << endl << endl;
for(int i = 0; i < students; i++)
{
cout << studentArray[i];
cout << setw(10) << studentAverage[i] << endl << endl;
}
}
int getStudents(int students)
{
cout << "How many students? ";
cin >> students;
cout << endl;
if(students > 50)
{
cout << "Invalid number of students, enter a number less than 50: ";
cin >> students;
cout << endl;
}
return students;
}
int getQuizzes(int quizzes)
{
cout << "How many quizzes? ";
cin >> quizzes;
cout << endl;
if(quizzes > 10)
{
cout << "Invalid number of quizzes, enter a number less than 10: ";
cin >> quizzes;
cout << endl;
}
return quizzes;
}
double calculateAvergage(int quiz_array[],int num_quizzes)
{
double average = 0;
for(int i = 0; i < num_quizzes; i++)
{
average = quiz_array[i] + average;
}
average = (average/num_quizzes);
return average;
}
cin
, вероятно, находится в состоянии сбоя, опубликуйте полный пример. - person user657267   schedule 29.10.2014getStudents(students);
- это неопределенное поведение, вы не инициализировалиstudents
. То же самое дляquizzes
. Вам даже не нужно передавать аргументы этим функциям. - person user657267   schedule 29.10.2014students
в качестве параметра, когда он не инициализирован. - person   schedule 29.10.2014>>
, если вы не убедитесь, что используете оставшиеся символы конца строки, у вас будут плохие времена. - person user657267   schedule 29.10.2014