C/C++

Помогите мне! C++ (текст, текст)

Когда я запускаю данный код, то сразу выводится значение else при выборе знака. Я чет понять не могу почему так
#include

using namespace std;
int main()
{
setlocale(LC_ALL,"ru");

int PressAnyButton,Var1, Var2,Summa1,stop;
char Sign;

cout << "Это калькулятор! \nнажмите любую клавишу чтобы продолжить\n";
cin >> PressAnyButton;

cout << "Выберите действие (+,-,/,*)";
cin >> Sign;

if (Sign == '+')
{
cout << "Введите первое и второе число";
cin >> Var1 >> Var2;

Summa1 = Var1 + Var2;

cout << "Сумма двух чисел равна " << Summa1;
}

if (Sign == '-')
{
cout << "Введите первое и второе число";
cin >> Var1 >> Var2;

Summa1 = Var1 - Var2;

cout << "Разность двух чисел равна " << Summa1;
}

if (Sign == '*')
{
cout << "Введите первое и второе число";
cin >> Var1 >> Var2;

Summa1 = Var1 * Var2;

cout << "Произведение двух чисел равно " << Summa1;
}

if (Sign == '/')
{
cout << "Введите первое и второе число";
cin >> Var1 >> Var2;

Summa1 = Var1 / Var2;

cout << "Сумма двух чисел равна " << Summa1;
}
else
{
cout << "ошибка епта";
}
cin >> stop;
}
#include <iostream>
#include <iomanip>
using namespace std;
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
char operation(const char* msg) {
cout << msg;
char op = cin.get();
cin.ignore(cin.rdbuf()->in_avail());
return op;
}
pair<bool, double> division(double a, double b) {
pair<bool, double> box{ true, 0 };
if (!b) box.first = false;
else box.second = a / b;
return box;
}
int main() {
system("chcp 1251 > nul");
const char* message[] = {
"Сумма двух чисел: ",
"Разность двух чисел: ",
"Произведение двух чисел: ",
"Частное двух чисел: ",
"Введите первое число: ",
"Введите второе число: ",
"Введите знак арифметической операции: "
};
const char* errors[] = {
"Попытка деления на ноль!",
"Несуществующая арифметическая операция!"
};
while (true) {
auto a = real(message[4]);
auto b = real(message[5]);
auto op = operation(message[6]);
auto flag = true;
double res;
size_t index;
size_t err;
switch (op) {
case '+':
res = a + b;
index = 0;
break;
case '-':
res = a - b;
index = 1;
break;
case '*':
res = a * b;
index = 2;
break;
case '/':
flag = division(a, b).first;
res = division(a, b).second;
index = 3;
err = 0;
break;
default:
flag = false;
err = 1;
}
if (flag) cout << message[index] << res;
else cout << errors[err];
puts("");
system("pause");
system("cls");
}
}
Сергей Бухонько
Сергей Бухонько
50 329
Лучший ответ
#include

using namespace std;
int main()
{
system("chcp 1251 > nul");

int PressAnyButton,Var1, Var2,Summa1,stop;
char Sign;

cout << "Это калькулятор! \nнажмите любую клавишу чтобы продолжить\n";
system("pause");

cout << "Выберите действие (+,-,/,*)";
cin >> Sign; fflush(stdin);

if (Sign == '+')
{
cout << "Введите первое число"; cin >> Var1; fflush(stdin);
cout << "Введите второе число"; cin >> Var2; fflush(stdin);
Summa1 = Var1 + Var2;
cout << "Сумма двух чисел равна " << Summa1;
return 0;
}

if (Sign == '-')
{
cout << "Введите первое число"; cin >> Var1; fflush(stdin);
cout << "Введите второе число"; cin >> Var2; fflush(stdin);
Summa1 = Var1 - Var2;
cout << "Разность двух чисел равна " << Summa1;
return 0;
}

if (Sign == '*')
{
cout << "Введите первое число"; cin >> Var1; fflush(stdin);
cout << "Введите второе число"; cin >> Var2; fflush(stdin);
Summa1 = Var1 * Var2;
cout << "Произведение двух чисел равно " << Summa1;
return 0;
}

if (Sign == '/')
{
cout << "Введите первое число"; cin >> Var1; fflush(stdin);
cout << "Введите второе число"; cin >> Var2; fflush(stdin);
double(Summa1) = double(Var1) / double(Var2);
cout << "Частное двух чисел равна " << Summa1;
return 0;
}

cout << "ошибка с кодом Ё";
return 1;
}
Куандык Аманжулов cin.get(); вместо паузы и int PressAnyButton там не нужен совсем
Наверняка ты для PressAnyButton вбиваешь литеру, а у тебя это int-овое значение, вот и вылезает наружу странное поведение. Таким образом переменная нарушает заданную для неё задачу - принимать нажатие любой клавиши, так как способна принимать только числа и то, после подтверждения через Enter, и то лишь определённого диапазона.

Сделай объявление char PressAnyButton;(или вообще убери этот лишний ввод)

Если уж так нужно добавить шаг, который ожидает отклик какой-то клавиши, вставь функцию getch();
Владимир Куликов теперь выводится текст из else,после результата