Как исправить ошибку в C++

Учу C++. Сделал консольный калькулятор. Когда пишу много чисел и нажимаю enter появляется это:введите сюда описание изображения

Когда пишу строчные буквы тоже так. Почему так происходит? Вот код:

#include <iostream>
#include <string>

int main()
{   
int a;
int b;
std::string c;

std::cout << "Input first number: ";
std::cin >> a;
std::cout << "Input second number: ";
std::cin >> b;
std::cout << "Choice symbol +,-,/,*: ";
std::cin >> c;

if (c == "+") {
     int d = a + b;
     std::cout << "Result: " << d << "\n";
}
else if (c == "-") {
     int d = a - b;
     std::cout << "Result: " << d << "\n";
}
else if (c == "/") {
     int d = a / b;
     std::cout << "Result: " << d << "\n";
}
else if (c == "*") {
     int d = a * b;
     std::cout << "Result: " << d << "\n";
}
else {
     std::cout << "Input symbol!!!";
}

std::string ret;

std::cout << "Return? y or n: ";
std::cin >> ret;

if (ret == "n") {
      
}
else {
     main();
}   

}


Ответы (2 шт):

Автор решения: Serj525

main() это точка входа в программу, её не нужно рекурсивно вызывать. То что вы хотите добавте ваш код в цилк do while:

→ Ссылка
Автор решения: chip

Можно так

#include <iostream>
#include <string>



int a, b;
std::string c, ret = "n";

void Calk() {
    for(;;) {
        
            std::cout << "Input first number: " << "\n";
            std::cin >> a;
            std::cout << "Input second number: " << "\n";
            std::cin >> b;
            std::cout << "Choice symbol +,-,/,*: " << "\n";
            std::cin >> c;
        
            if (c == "+") {
                int d = a + b;
                std::cout << "Result +: " << d << "\n";

                std::cout << "Return? y or n: " << "\n";
                std::cin >> ret;
                if (ret == "n") {
                    break;
                }
                
            }
            else if (c == "-") {
                int d = a - b;
                std::cout << "Result -: " << d << "\n";

                std::cout << "Return? y or n: " << "\n";
                std::cin >> ret;
                if (ret == "n") {
                    break;
                }
            }
            else if (c == "/") {
                int d = a / b;
                std::cout << "Result /: " << d << "\n";

                std::cout << "Return? y or n: " << "\n";
                std::cin >> ret;
                if (ret == "n") {
                    break;
                }
            }
            else if (c == "*") {
                int d = a * b;
                std::cout << "Result *: " << d << "\n";

                std::cout << "Return? y or n: " << "\n";
                std::cin >> ret;
                if (ret == "n") {
                    break;
                }
            }
            else {
                std::cout << "Input symbol!!!";

                std::cout << "Return? y or n: " << "\n";
                std::cin >> ret;
                if (ret == "n") {
                    break;
                }
            }
    }

}

int main()
{   
  
    Calk();
    

}

Код можно сократить но пока так вам будет более понятно. А то что вы делаете c main это немного не обычно :)

https://godbolt.org/z/KEx1jv74q

→ Ссылка