Как проверить, является ли введенный символ символом или нет? - PullRequest
0 голосов
/ 19 марта 2019

У меня проблема с калькулятором. Я хочу запрограммировать калькулятор, но он тоже «работает» с буквами. Если я введу f.e буквы "s" и "u", я получу ответ 0. Как это исправить?

# include <stdio.h>

int main() {

char operator;
int a,b;

printf("Enter the operator (+, -, *, /): ");
scanf("%c", &operator);

printf("Enter two number and seperate them with space: ");
scanf("%lf %lf",&a, &b);

switch(operator)
{
    case '+':
        printf("%.2lf + %.2lf = %.2lf",a, b, a + b);
        break;

    case '-':
        printf("% 2lf - %.2lf = % 2lf",a, b, a - b);
        break;

    case '*':
        printf("%.2lf * %.2lf = %.2lf",a, b, a * b);
        break;

    case '/':
        printf("%.2lf / %.2lf = %.2lf",a, b, a / b);
        break;


    default:
        printf("Error!");

}

return 0;
}

Извините, если вопрос был здесь.
Ссылка на ответ также приветствуется!
Ура! * * 1006

Ответы [ 3 ]

1 голос
/ 19 марта 2019

Я внес исправления, описанные в комментариях

#include <stdio.h>

int main(void) {                                            // correct definition

    char operator;
    double a,b;                                             // correct type

    printf("Enter the operator (+, -, *, /): ");
    if(scanf("%c", &operator) != 1) {                       // add error check
        puts("Bad operator entered");
        return 1;
    }

    printf("Enter two number and seperate them with space: ");
    if(scanf("%lf %lf",&a, &b) != 2) {                      // add error check
        puts("Bad value(s) entered");
        return 1;
    }

    switch(operator)
    {
        case '+':
            printf("%.2lf + %.2lf = %.2lf",a, b, a + b);
            break;

        case '-':
            printf("%.2lf - %.2lf = % 2lf",a, b, a - b);    // corrected typo
            break;

        case '*':
            printf("%.2lf * %.2lf = %.2lf",a, b, a * b);
            break;

        case '/':
            printf("%.2lf / %.2lf = %.2lf",a, b, a / b);
            break;

        default:
            printf("Error!");
    }
    return 0;
}
0 голосов
/ 28 марта 2019

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

int main(void) {                                            // correct definition

char operator;
double a,b;                                             // correct type

printf("Enter the operator (+, -, *, /): ");
if(scanf("%c", &operator) != 1) {                       // add error check
    puts("Bad operator entered");
    return 1;
}

printf("Enter two number and seperate them with space: ");
if(scanf("%lf %lf",&a, &b) != 2) {                      // add error check
    puts("Bad value(s) entered");
    return 1;
}

switch(operator)
{
    case '+':
        printf("%.2lf + %.2lf = %.2lf",a, b, a + b);
        break;

    case '-':
        printf("%.2lf - %.2lf = % 2lf",a, b, a - b);    // corrected typo
        break;

    case '*':
        printf("%.2lf * %.2lf = %.2lf",a, b, a * b);
        break;

    case '/':
        if(b!=0){                                    //added an if-sentence
            printf("%.2lf / %.2lf = %.2lf\n",a, b, 
            a / b);
        }
        else
            printf("Can't divide by zero\n");
        break;


    default:
        printf("Error!");
}
return 0;
}

По сути, я просто помещаю предложение if в case ('/').

0 голосов
/ 19 марта 2019

ОБНОВЛЕНО:

Я нашел мой самый старый код в папке библиотеки, возможно, он поможет вам в этой проблеме.Это определенно сработает.

char operator;
printf("Enter the Operation in ( * , / , - , + )");
scanf("%s",&operator);
if(operator!='+' || operator!='-' || operator!='*' || operator!='/')
{
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...