#c
#c
Вопрос:
В этом коде я в основном создаю программу для оздоровительного клуба. Пользователь вводит желаемое членство и месяцы, а затем выводит общую сумму сборов. Программа отлично работает для вариантов 2 и 4, однако для 1 она выдает два вывода, а для 3 вообще ни одного. Я предполагаю, что в моем коде есть небольшая ошибка, которую я действительно не могу найти. Программа работает нормально для 2, но tit вычисляет два значения для 1 и не отображает ни одного для 3.
#include <iostream>
using namespace std;
void menu ()
{
cout << "nttHealth Club Membership Menunn";
cout << "1. Standard Adult Membershipn";
cout << "2. Child Membershipn";
cout << "3. Senior Citizen Membershipn";
cout << "4. Quit the Programnn";
cout << "Enter your choice: ";
}
void fees(int member,int months)
{
cout<<"The fees is Rs.";
cout<<(member*months);
}
int main()
{
int months, choice;
int adult=40;
int child=20;
int senior=50;
do{menu();
{
cin>>choice;
if (choice>=4)
{
cout<<"You have quit your membershipn";
return 0;
}
cout<<"Please enter the number of months you want"<<endl;
cin>>months;
switch (choice)
{
case 0:
choice==1;
fees(adult,months);
}
case 1:
{
choice==2;
fees(child,months);
}
case 2:
{
choice==3;
fees(senior,months);
}
}
}
}
while((choice>=1) || (choice<4));
return 0;
}
Комментарии:
1. 1) Исправьте отступы и общее форматирование кода. 2) Просмотрите инструкцию break .
2.
choice==1;
ничего не делает.
Ответ №1:
Я исправил некоторые части вашей программы. Вот мой.
Моя программа
#include <iostream>
using namespace std;
void fees(int member, int months); //function prototype to calculate fees for members of differing age groups
void menu(); //function prototype to display options
void menu()
{
cout << "nttHealth Club Membership Menunn";
cout << "1. Standard Adult Membershipn";
cout << "2. Child Membershipn";
cout << "3. Senior Citizen Membershipn";
cout << "4. Quit the Programnn";
cout << "Enter your choice: ";
}
void fees(int member,int months)
{
cout<<"The fees is Rs.";
cout<<(member*months);
}
int main()
{
int months, choice;
int senior=50;
int adult=40;
int child=20;
menu(); //invoke menu method
cin>>choice;
if (choice == 4)
{
cout<<"You have quit your membershipn";
return 0;
}
cout<<"Please enter the number of months you want"<<endl;
cin>>months;
switch (choice)
{
case 1:
fees(adult,months);
break;
case 2:
fees(child,months);
break;
case 3:
fees(senior,months);
break;
default:
return 0; //exit program if choice is out of range
}
return 0;
}
Вывод для выбора 1
Enter your choice: 1
Please enter the number of months you want
3
The fees is Rs.120
Вывод для выбора 3
Enter your choice: 3
Please enter the number of months you want
5
The fees is Rs.250
Вывод для выбора 2
Enter your choice: 2
Please enter the number of months you want
6
The fees is Rs.120
Как вы можете видеть, я попытался сделать отступ в коде, чтобы убедиться, что он аккуратный. Как и то, что V.p. сказал в предыдущем комментарии, поскольку вы объявили выбор в switch statement
, нет необходимости включать choice==1 or etc
. Вы будете указывать это только в том if-else parentheses
случае, если хотите реализовать условия. В конце концов, все ваши варианты будут работать. Самое главное, пожалуйста, внимательно прочитайте документацию по C и не делайте этого ради этого, иначе у вас будут проблемы. Надеюсь, это ответ на ваш вопрос 🙂
Комментарии:
1. Две вещи. 1) Я хотел, чтобы программа была в цикле, чтобы после завершения она автоматически отображала меню, и программа запускалась снова. 2) Не могли бы вы направить меня к аутентичным ресурсам.
2. @Kh.Murad не имеет смысла запускать все это снова, даже если выбор правильный. Как будто это не имеет никакого смысла с логической точки зрения. Вам нужно выполнять цикл только тогда, когда в этом экземпляре необходимо выполнить хотя бы 1 набор инструкций
3. А также тот факт, что это простая программа, это можно сделать во время цикла для цикла и т. Д., Даже Исключение try-catch тоже будет работать.
Ответ №2:
Вам нужны инструкции break. Вероятно, поэтому вы получаете два вывода для выбора 1.
У вас нет инструкции case для выбора 3. Вот почему вы не получаете вывода для 3.
Почему вы реализуете регистр переключения для 0? Кажется ненужным.
Кстати, все ваши строки, подобные choice==1
, на самом деле ничего не делают в вашем коде, и вам это не нужно. Избавьтесь от них.
Наконец, исправьте отступ.