Я только начинаю изучать C++, но у меня возникают проблемы с обнаружением ошибки. Когда я компилирую свой код, кажется, что он не может пройти первые два оператора if. После того, как инструкции в операциях if появятся на экране компилятора, программа внезапно прекратится. Я пытаюсь понять, почему я не могу вводить данные в частях std::cin >>
, несмотря на то, что код не содержит ошибок в компиляторе. Если бы кто-нибудь мог помочь мне понять это, это было бы очень полезно.Пользовательский ввод C++ не регистрируется
#include <iostream>
int main(int argc, const char * argv[]) {
// insert code here...
std::string internetPlan;
float monthlyBill;
float internetPlanA = 9.95;
float internetPlanB = 13.95;
float internetPlanC = 29.99;
float amountSaved1; //amount saved comparing plan A to plan B
float amountSaved2; // amount saved comparing plan A to plan C
float amountSaved3; //amount saved comparing plan B to plan C
std::string months[12] = {"January", "February", "March", "Abril", "May", "June", "July", "August", "September", "October", "November", "December"};
std::string userInput;
int hoursOfMonth;
std::cout << "Welcome to the Ardeo Internet Service Provider\n";
std::cout << "The following are our internet service plans\n";
std::cout << "Package A: $9.95 per month for 10 hours access. Additional hours are $2.00 per hour\n";
std::cout << "Package B: $13.95 per month for 20 hours access. Additional hours are $1.00 per hour\n";
std::cout << "Package C: $29.99 per month per unlimited access\n";
std::cout << "Please enter your internet plan. Enter A, B or C";
std::cin >> internetPlan;
if (internetPlan!= "A" || internetPlan!="a" || internetPlan != "B" || internetPlan!= "b" || internetPlan != "C" || internetPlan != "c") {
std::cout << "Please enter a valid plan\n";
std::cout << "Enter plan A, B or C\n";
std::cin >> internetPlan;
}
std::cout << "Please enter the hours you used\n";
std::cin >> hoursOfMonth;
if (hoursOfMonth < 0 || hoursOfMonth > 744) {
std::cout << "You cannot have negative hours or more than 744\n";
std::cout << "Please enter the hours again\n";
std::cin >> hoursOfMonth;
return hoursOfMonth;
}
std::cout << "Please enter the month";
std::cin >> userInput;
if (userInput == months[0] && hoursOfMonth > 744) {
std::cout << "Sorry you have too many hours for the month of Janurary\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[1] && hoursOfMonth > 672){
std::cout << "Sorry too many hours for Februrary\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[2] && hoursOfMonth > 744) {
std::cout << "Sorry too many hours for March\n";
std::cout << "Please enter month again";
std::cin >> userInput;
} else if (userInput == months[3] && hoursOfMonth > 720) {
std::cout << "Sorry too many hours for Abril\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[4] && hoursOfMonth > 744) {
std::cout << "Sorry too many hours for May\n";
std::cout << "Please enter month again";
std::cin >> userInput;
} else if (userInput == months[5] && hoursOfMonth > 720) {
std::cout << "Sorry too many hours for June\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[6] && hoursOfMonth > 744){
std::cout << "Sorry too many hours for July\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[7] && hoursOfMonth > 744){
std::cout << "Sorry too many hours for August\n";
std::cout << "Please enter month again";
std::cin >> userInput;
} else if (userInput == months [8] && hoursOfMonth > 720){
std::cout << "Sorry too many hours for September\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[9] && hoursOfMonth > 744){
std::cout << "Sorry too many hours for October\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[10] && hoursOfMonth > 720) {
std::cout << "Sorry too many hours for November\n";
std::cout << "Please enter month again";
std::cin>> userInput;
} else if (userInput == months[11] && hoursOfMonth > 744){
std::cout << "Sorry too many hours for December\n";
std::cout << "Please enter month again";
std::cin >> userInput;
}
// used to determine how much money would be saved
if (internetPlan == "A" || internetPlan == "a")
{
if (hoursOfMonth <= 10) {
} else {
monthlyBill = internetPlanA + ((hoursOfMonth-10)*2);
std::cout << "Your bill will be $" << monthlyBill << "\n";
amountSaved1 = monthlyBill - ((internetPlanB+1*(hoursOfMonth -10)));
std::cout << "You would save $"<<amountSaved1<< " with internet plan B\n";
amountSaved2 = monthlyBill - internetPlanC;
std::cout << "You would save $" <<amountSaved2<< " with internet plan C\n";
}
} else if (internetPlan == "B" || internetPlan == "b") {
if (hoursOfMonth <= 20) {
monthlyBill = internetPlanB;
std::cout << "Your monthly bill will be $"<< monthlyBill << "\n";
} else {
monthlyBill = internetPlanB + ((hoursOfMonth - 20)*1);
amountSaved3 = monthlyBill - internetPlanC;
std::cout << "Your monthly bill will be $"<<monthlyBill << "\n";
std::cout << "You can save $"<<amountSaved3 << " if you switch to internet plan C\n";
}
}
return 0;
}
Пожалуйста, попробуйте сузить его до соответствующего кода, кода, с которым у вас действительно возникли проблемы. Или еще лучше, попробуйте создать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и покажите нам. –
Однако одной из проблем может быть утверждение 'return' в одной из проверок. Это приведет к выходу программы. –
Вы хотите использовать '&&' not '||': 'internetPlan! =" A "&& internetPlan! =" A "...' –