Задать вопрос
mksmvnv
@mksmvnv
Backend Developer

Почему программа прерывает свою работу на C?

Написал мега простой калькулятор на старте обучения. Создатель курса не отвечает на вопрос, поэтому пишу тут. Консольная программа спокойно принимает x, y и math. То есть числа для подсчета результата и символ операции присваиваются адекватно. Но, как только программа должна через свич найти совпадения и вывести расчет, сразу же перескакивает на строку с дефолтом и принтует сообщение об ошибки. Ниже будет код, а ниже кода, то что выводится в консоли. Что заставляет программу прерваться и перескочить не дефолт? Заранее спасибо!

#include <stdio.h>

int main() {

	int x, y, res;
	char math;

	printf("Please, enter first namber: ");
	scanf("%d", &x);
	printf("Please, enter second namber: ");
	scanf("%d", &y);
	printf("Please, enter math symbol: ");
	scanf("%c\n", &math);
	printf("Please, wait... We are calculating finish result.\n");

	switch(math) {
		case '+':
			res = x + y;
			printf("Result: %d + %d = %d\n", x, y, res); break;
		case '-':
			res = x - y;
			printf("Result: %d - %d = %d\n", x, y, res); break;
		case '*':
			res = x * y;
			printf("Result: %d * %d = %d\n", x, y, res); break;
		case '/':
			res = x / y;
			printf("Result: %d / %d = %d\n", x, y, res); break;
		default:
			printf("Error. Please, try again."); break;
	}

	return 0;
}


Вывод программы:

Please, enter first namber: 56
Please, enter second namber: 45
Please, enter math symbol: +
Please, wait... We are calculating finish result.
Error. Please, try again.
D:\С\tasks\21\x64\Debug\21.exe (процесс 8132) завершил работу с кодом 0.
Нажмите любую клавишу, чтобы закрыть это окно:
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
mayton2019
@mayton2019
Bigdata Engineer
Возможно scanf при попытки считывать 1 character читает предыдущий enter.

Попробуй рецепт который пишут тут https://stackoverflow.com/questions/13542055/how-t...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
Ну выведите что у вас в math, и сколько в нем символов. Или дебагом посмотрите. Это раз.

Второе - я не уверен, но по моему свитч не работает со строками, ибо сравнивает указатели.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы