почему-то выбирает действие кроме деления почему ???
#include <iostream>//подключаем стандартную библеотеку
#include <ctime>//библеотека для работы с рандомными числами и временем
using namespace std;
int main () {
int random1, random2, randop, tanswer, answer, t= 0, diapoz;//числовые переменные
string name;//символьная переменная
bool over = true, dia = true;//
{
cout <<"как тебя зовут?"<<endl;
cin >> name;// спрашивает и запоминает имя
cout<< "Привет "<< name <<endl;
cout <<"Я хочу сыграть с тобой в одну игру на устный счет. Правила простые я задаю тебе пример на сложение , вычитанее или умножение. За каждый праввильный будет прибавляться по 1 очку"<<endl;
v://точка спавн
cout <<"выбери дипозон чисел (выбери номер варианта): 1) от 0 до 10 2) от 0 до 100."<<endl;
cin >> diapoz;//спрашивает диапозон чисел
while (over) {
if (diapoz == 1) {//проверяет если diapoz будет равен 1 то он будет выполнять следущую команду
srand (time(NULL));
random1 = rand () % 11;//генерирует случайные числа от 0 до 10
random2 = rand () % 11;
}
if (diapoz == 2) {
srand (time(NULL));
random1 = rand () % 101;// генерирует случайные числа от 0 до 100
random2 = rand () % 101;
}
if (diapoz != 1 && diapoz != 2) {//проверяет если diapoz будет не равен 1 или 2 то он выполняет следущую команду
cout <<"непонятная команда!"<<endl;
goto v;//перекидывает на точку v:
}
cout <<"Поехали!\n_______________________"<<endl;
randop = rand() % 3 +1;//генерирует случайное действие + - * или /
switch (randop) {
case 1: ;
tanswer = random1 + random2;
cout <<random1<< "+"<<random2<<endl;// +
break;
case 2: ;
tanswer = random1 - random2;
cout <<random1<< "-"<<random2<<endl;// -
break;
case 3: ;
tanswer = random1 * random2;
cout <<random1<< "*"<<random2<<endl;// *
break;
case 4: ;
tanswer = random1 / random2;
cout <<random1<< "/"<<random2<<endl;// /
break;
}
cin >> answer;//спрашивает ответ
if (answer == tanswer) {//проверяет ваш ответ с другим ответом
cout <<"Правильно!\n_____________________________";
cout <<"\n\n";
t++;//прибавляет по 1 баллу
}
else {//иначе если то действие не выполнилось то он выполняет это
cout <<"Неправильно! Ответ:"<<tanswer<<endl;
cout <<"__________________\n\n";
cout <<"у тебя "<< t <<" правильных ответов"<<endl;
over = false;//заканчивает игру
}
}
}
return 0;
}
Будте очень внимательны с не инициализированными переменными. Например если
randop = rand() % 4;
получит значение 0, то в switch-case вы не попадете ни в оду из ветвей, и переменная tanswer
останется не инициализированной, те будет содержать мусор.
Проверка if (answer == tanswer)
в таком случае очень опасна, поэтому ваша программа и работает через раз.
The variable 'tanswer' is being used without being initialized.
И отмечу, что от goto
лучше избавиться, едва ли вы встретите этот оператор в любых других программах. В вашем случае вместо метки goto
целесообразно использовать цикл while
с проверкой выхода по достижению правильного ответа
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задание было, написать программу и распараллелить ее, само задание звучит так : Задана последовательность, состоящая только из символов >, < и -Требуется...
Задали сделать массив структур, в котором ведомости про поезда (по названиям переменных думаю всё понятно)Нужно чтобы программа выводила...