0

I don't understand why my output after 1 cycle of execution prints "Enter one of the operators" for 2 times and only then "Choose an operator(+, -, *, /, !): ". Also, program says to change datatype of sum even though it is not int. So sum might be 2 in case of 5/2. Should I just change data types of value1, value2 and sum to double?

#include <stdio.h>
int add(int value1, int value2);
int sub(int value1, int value2);
int multiply(int value1, int value2);
int divide(int value1, int value2);
int factorial(int value1);

int main(int sum){ 
    int value1, value2;
    char o;
    do{
        printf("Choose an operator(+, -, *, /, !): ");
        scanf("%c", &o);
        if (o == '+' || o == '-' || o == '*' || o == '/'){
            printf("Enter the first number: ");
            scanf("%d", &value1);
            printf("Enter the second number: ");
            scanf("%d", &value2);
        }else if (o == '!'){
            printf("Enter the first number: ");
            scanf("%d", &value1);
        }
        
        if (o == '+'){
            sum = add(value1, value2);
            printf("%d + %d = %d\n", value1, value2, sum);
        }
        else if (o == '-'){
            sum = sub(value1, value2);
            printf("%d - %d = %d\n", value1, value2, sum);
        }
        else if (o == '*'){
            sum = multiply(value1, value2);
            printf("%d * %d = %d\n", value1, value2, sum);
        }
        else if (o == '/'){
            sum = divide(value1, value2);
            printf("%d / %d = %d\n", value1, value2, sum);
        }
        else if (o == '!'){
            sum = factorial(value1);
            printf("%d!= %d\n", value1, sum);
        }
        else{
            printf("Enter one of the operators!");
        }
    }while(o != 'q');
}

int add(int value1, int value2){
    return (value1 + value2);
}

int sub(int value1, int value2){
    return (value1 - value2);
}

int multiply(int value1, int value2){
    return (value1 * value2);
}

int divide(int value1, int value2){
    return (value1 / value2);
}
int factorial(int value1){
    if (value1 == 0 || value1 == 1){
        return 1;
    }else{
        return value1 * factorial(value1 - 1);
    }
}

0 Answers0