#include <stdio.h>

void calc(int func);

int main() {
    int exit = 1,sw;

    do{
        printf("\nВыберите операцию:\n");
        printf("a) сложение\tb) вычитание\n");
        printf("c) умножение\td) деление\n");
        printf("q) exit\nInput: ");
        sw = getchar();
        switch(sw){
            case 'a': calc(1); break;
            case 'b': calc(2); break;
            case 'c': calc(3); break;
            case 'd': calc(4); break;
            case 'q': exit = 0; break;
    
    }}while(exit);
    return 0;
}

void calc(int func){
    float n1,n2;
    int x;
    printf("Введите первое число: ");
    while(scanf(" %f",&n1)!=1){
        printf("То что вы ввели не является числом.\n");
        printf("Введите первое число: ");
        while(getchar()!='\n') continue;
    } 

    printf("Введите второе число: ");
    do{
        x = (scanf(" %f",&n2) != 1);
        if(x){
            printf("То что вы ввели не является числом.\n");
            printf("Введите второе число: ");
        }else
            if(n2 == 0&&func==4){
                printf("Введите число отличное от 0\n");
                printf("Введите второе число: ");
                x = 1;
        }
        while(getchar()!='\n') continue;
    }while(x);
    switch(func){
        case 1:
            printf("%f + %f = %f\n",n1,n2,n1+n2);
            break;
        case 2:
            printf("%f - %f = %f\n",n1,n2,n1-n2);
            break;
        case 3:
            printf("%f * %f = %f\n",n1,n2,n1*n2);
            break;
        case 4:
            printf("%f / %f = %f\n",n1,n2,n1/n2);
            break;
    }
}
