Помогите, в чем я не прав
#include
using namespace std;
int main()
{
int iChoice = 0;
float fRating = 0;
cout << "\t\tПрограмма-тест, оператора switch\n\n";
cout << "Сколько жизней у кошки?";
cout << "Ответы: \n";
cout << "-> 5 жизней\n-> 7 жизней\n-> 9 жизней";
cout << "\nВаш ответ: ";
cin >> iChoice;
switch(iChoice)
{
case 5:
fRating = 0;
break;
case 7:
fRating = 0;
break;
case 9:
fRating = 5;
break;
}
cout << "\nСколько сантиметров в метре? \n";
cout << "Ответы: \n";
cout << "-> 10 сантиметров\n-> 100 сантиметров\n-> 1000 сантиметров";
cout << "\nВаш ответ: ";
cin >> iChoice;
switch(iChoice)
{
case 10:
fRating = fRating + 0;
break;
case 100:
fRating = fRating + 5;
break;
case 1000:
fRating = fRating + 0;
break;
}
cout << "\nКакова скорость звука? \n";
cout << "Ответы: \n";
cout << "-> 330 м/с\n-> 320 м/с\n-> 230 м/с";
cout << "\nВаш ответ: ";
cin >> iChoice;
switch(iChoice)
{
case 330:
fRating = fRating + 5;
break;
case 320:
fRating = fRating + 0;
break;
case 230:
fRating = fRating + 0;
break;
}
cout << fRating << endl;
cout << "\nВы заработали = " << fRating/3 << " баллов!";
return 0;
}
Другие языки программирования и технологии
пишу на с++ программу-тест, выбор правильно ответа цифрой, но если я нажимаю символ, то программа сразу вылетает
В этом задании не логично использовать switch, так как верный ответ один и fRating = fRating + 0; ерунда.
Поправил твой код.
Сделал, если пишешь что - то кроме числа - требует ввести ещё раз, пока только одни цифры не будут в числе. Программа теперь не вылетает.
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
size_t input()
{
size_t output;
for (;;)
{
string s;
if (cin.rdbuf()->in_avail())
{
cin.ignore(cin.rdbuf()->in_avail(), '\n');
}
getline(cin, s);
int in = atoi(s.c_str());
string regress = to_string(in);
if (s == regress)
{
output = in;
break;
}
else
{
cout << "Ошибка. Повторите ввод" << endl;
}
}
return output;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
int iChoice = 0;
float fRating = 0;
cout << "\t\tПрограмма-тест, оператора switch\n\n";
cout << "Сколько жизней у кошки? ";
cout << "Ответы: \n";
cout << "-> 5 жизней\n-> 7 жизней\n-> 9 жизней";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 5:
fRating += 0;
break;
case 7:
fRating += 0;
break;
case 9:
fRating += 5;
break;
default:
fRating += 0;
break;
}
cout << "\nСколько сантиметров в метре? \n";
cout << "Ответы: \n";
cout << "-> 10 сантиметров\n-> 100 сантиметров\n-> 1000 сантиметров";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 10:
fRating += 0;
break;
case 100:
fRating += 5;
break;
case 1000:
fRating += 0;
break;
default:
fRating += 0;
break;
}
cout << "\nКакова скорость звука? \n";
cout << "Ответы: \n";
cout << "-> 330 м/с\n-> 320 м/с\n-> 230 м/с";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 330:
fRating += 5;
break;
case 320:
fRating += 0;
break;
case 230:
fRating += 0;
break;
default:
fRating += 0;
break;
}
cout << fRating << endl;
cout << "\nВы заработали = " << fRating / 3. << " баллов! ";
system("pause");
return 0;
}

Поправил твой код.
Сделал, если пишешь что - то кроме числа - требует ввести ещё раз, пока только одни цифры не будут в числе. Программа теперь не вылетает.
#include <iostream>
#include <windows.h>
#include <string>
using namespace std;
size_t input()
{
size_t output;
for (;;)
{
string s;
if (cin.rdbuf()->in_avail())
{
cin.ignore(cin.rdbuf()->in_avail(), '\n');
}
getline(cin, s);
int in = atoi(s.c_str());
string regress = to_string(in);
if (s == regress)
{
output = in;
break;
}
else
{
cout << "Ошибка. Повторите ввод" << endl;
}
}
return output;
}
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
system("color 0A");
int iChoice = 0;
float fRating = 0;
cout << "\t\tПрограмма-тест, оператора switch\n\n";
cout << "Сколько жизней у кошки? ";
cout << "Ответы: \n";
cout << "-> 5 жизней\n-> 7 жизней\n-> 9 жизней";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 5:
fRating += 0;
break;
case 7:
fRating += 0;
break;
case 9:
fRating += 5;
break;
default:
fRating += 0;
break;
}
cout << "\nСколько сантиметров в метре? \n";
cout << "Ответы: \n";
cout << "-> 10 сантиметров\n-> 100 сантиметров\n-> 1000 сантиметров";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 10:
fRating += 0;
break;
case 100:
fRating += 5;
break;
case 1000:
fRating += 0;
break;
default:
fRating += 0;
break;
}
cout << "\nКакова скорость звука? \n";
cout << "Ответы: \n";
cout << "-> 330 м/с\n-> 320 м/с\n-> 230 м/с";
cout << "\nВаш ответ: ";
iChoice = input();
switch (iChoice)
{
case 330:
fRating += 5;
break;
case 320:
fRating += 0;
break;
case 230:
fRating += 0;
break;
default:
fRating += 0;
break;
}
cout << fRating << endl;
cout << "\nВы заработали = " << fRating / 3. << " баллов! ";
system("pause");
return 0;
}

у меня не вылетает, а сразу весь дальнейший текст программы показывает, делай так:
cout << "Сколько жизней у кошки?";
cout << "Ответы: \n";
cout << "-> 5 жизней\n-> 7 жизней\n-> 9 жизней";
cout << "\nВаш ответ: ";
cin >> iChoice;
if ((iChoice != 5) && (iChoice != 7) && (iChoice != 9))
{
cout << "Вы неправильно ввели ответ, запустите программу сначала и попробуйте еще раз";
system("pause");
}
Как я надеюсь ты понял из моего примера это условие нужно поставить после каждого вопроса в твоем тесте, дерзай. И кстати, чтобы каждый раз заного не запускать программу там зациклить бы не мешало ввод ответа, но я не хочу возится, рассчитываю на тебя ;)
cout << "Сколько жизней у кошки?";
cout << "Ответы: \n";
cout << "-> 5 жизней\n-> 7 жизней\n-> 9 жизней";
cout << "\nВаш ответ: ";
cin >> iChoice;
if ((iChoice != 5) && (iChoice != 7) && (iChoice != 9))
{
cout << "Вы неправильно ввели ответ, запустите программу сначала и попробуйте еще раз";
system("pause");
}
Как я надеюсь ты понял из моего примера это условие нужно поставить после каждого вопроса в твоем тесте, дерзай. И кстати, чтобы каждый раз заного не запускать программу там зациклить бы не мешало ввод ответа, но я не хочу возится, рассчитываю на тебя ;)
Похожие вопросы
- Как правильно расшифровываются цифры в версии какой-либо программы (например: 1.4.0.11)? Или как следует это делать?
- Пишут ли еще программы на голом winapi и c++? Или сейчас все пишут при помощи библиотека, таких как Qt?
- почему программы сразу нельзя написать без багов? что этому мешает?
- Delphi Тест. Выбор картинки по играющему звуку.
- Как задать двумерный массив на C#, чтобы значения можно было писать при запуске программы?
- Пишу отчет к программе. В отчете встретился пункт "Определение целесообразности разработки". Что в нем можно написть?
- какой язык программирование лучше учить для нуба в этом деле Хочу научиться писать игры и программы
- Мои знакомые программисты (их двое) не используют систему контроля версий.. . ( они пишут очень сложную программу )
- Господа програмисты, пишите ли вы после оператора выбора if альтернативу else и пустой оператор{}?
- Visual Basic .NET при попытке отладки проги пишет, что отладка невозможна, т.к. нет ответа от службы IIS. Где ее взять?