Happypopnik
Happypopnik

Reputation: 33

simple calculator in c++ weird results

I am new to c++ I tried to create a simple calculator. I am not sure why but when I run this code, it prints weird results, for example: 15 * 5 = 753

        int a;
        int b;
        char param;
        printf("Enter Two numbers:\n");
        scanf_s("%d %d", &a, &b);
        printf("%d %d\n", a, b);
        printf("Enter mathematical operator *-/+\n");
        int result;
        scanf_s(" %c", &param);
        switch (param)
        {
        case ('+'):
            result = a + b;
            printf("%d", result);
        case ('-'):
            result = a - b;
            printf("%d", result);
        case ('*'):
            result = a * b;
            printf("%d", result);
        case ('/'):
            result = a / b;
            printf("%d", result);
        }

Upvotes: 2

Views: 133

Answers (2)

Bouraoui Al-Moez L.A
Bouraoui Al-Moez L.A

Reputation: 989

There is no break between cases which explain that your example enter in case '*' print 75 (15 * 5) as there is no break continue to '/' and print 3 (15 / 5). And that's what you got 753.

switch (param)
{
case ('+'):
    result = a + b;
    printf("%d", result);
    break;
case ('-'):
    result = a - b;
    printf("%d", result);
    break;
case ('*'):
    result = a * b;
    printf("%d", result);
    break;
case ('/'):
    result = a / b;
    printf("%d", result);
    break;
}

Upvotes: 4

ABcDexter
ABcDexter

Reputation: 2941

Remember to include break; statement after each case

    int a;
    int b;
    char param;
    printf("Enter Two numbers:\n");
    scanf_s("%d %d", &a, &b);
    printf("%d %d\n", a, b);
    printf("Enter mathematical operator *-/+\n");
    int result;
    scanf_s(" %c", &param);
    switch (param)
    {
    case ('+'):
        result = a + b;
        printf("%d", result);
        break;
    case ('-'):
        result = a - b;
        printf("%d", result);
        break;
    case ('*'):
        result = a * b;
        printf("%d", result);
        break;
    case ('/'):
        result = a / b;
        printf("%d\n", result);
        break;
    }

Working code

Upvotes: 2

Related Questions