Я новичок в программировании. В моем учебнике проблема привела его к написанию программы, которая запрашивает у пользователя осадку в течение трех месяцев и вычисляет среднее значение.Вход после cin.getline() не удается?
Я использовал функцию cin.getline(), чтобы прочитать ввод пользователя в массив. В тексте указано, что нет никакого беспокойства о том, что массив переполняется с помощью функции cin.getline(). Тем не менее, если я ввешу строку, большую, чем массив, моя программа переходит в haywire. Почему это происходит?
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int SIZE = 10;
char month1[SIZE], month2[SIZE], month3[SIZE];
double rain1, rain2, rain3, average;
cout << "Enter the name of the first month: ";
cin.getline(month1,SIZE);
cout << "Enter the rainfall for " << month1 << ": ";
cin >> rain1;
cin.ignore();
cout << "Enter the name of the second month: ";
cin.getline(month2,SIZE);
cout << "Enter the rainfall for " << month2 << ": " ;
cin >> rain2;
cin.ignore();
cout << "Enter the name of the third month: ";
cin.getline(month3,SIZE);
cout << "Enter the rainfall for " << month3 << ": ";
cin >> rain3;
cin.ignore();
average = (rain1 + rain2 + rain3)/3;
cout << fixed << showpoint << setprecision(2)
<< "The average rainfall for " << month1 << ", " << month2
<< ", and " << month3 << " is " << average << " inches\n\n";
return 0;
}
Вам необходимо определить «haywire». – GManNickG
Вы можете помочь объяснить «haywire», указав (а), что вы ожидаете, (б) что на самом деле произошло, и (c) почему это не соответствовало вашим ожиданиям. –
haywire - это когда программа начинает действовать беспорядочно и непредсказуемо. Программа должна рассчитать среднее число введенных чисел и отобразить это; однако он не делает этого, если вводится ввод, который больше, чем определенный массив. Вместо этого он отображает большое число, содержащее около ста значащих цифр, которое меняется при каждом запуске программы. – knobcreekman