My C calculator is broken (isdigit) Help.

+2 bruno silva · August 10, 2014
My code does not work

I'm trying to create a calculator, I use the "isdigit" to see if the input is a number and does not work :(

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <math.h>

int main()
{
    top:;
    int primeiro;
    int segundo;
    char sinal;
    int valor_mais;
    int valor_menos;
    int valor_multi;
    int valor_divi;

    printf("First number: \n");
    scanf(" %d", &primeiro);

    if(isdigit(primeiro)) {
            goto result;
    }else {
        goto bad;
    }



    printf("Second number: \n");
    scanf(" %d", &segundo);

    if(isdigit(segundo)) {
            goto result;
    }else {
        goto bad;
    }



    result:;
    valor_mais = primeiro + segundo;
    valor_menos = primeiro - segundo;
    valor_multi = primeiro * segundo;
    valor_divi = primeiro / segundo;

    printf("*, -, + or / \n");
    scanf("%s", &sinal);


        switch(sinal){

        case '+' :  printf("Result: %d \n",valor_mais);
                    goto top;
                    break;
        case '-' :  printf("Result: %d \n",valor_menos);
                    goto top;
                    break;
        case '*' :  printf("Result: %d \n",valor_multi);
                    goto top;
                    break;
        case '/' :  printf("Result: %d \n",valor_divi);
                    goto top;
                    break;

        default : printf("Bad input \n");
                  goto top;
                  break;

        }
bad:;
printf("This is not a number!");

    return 0;

Post a Reply

Replies

Oldest  Newest  Rating
0 bruno silva · August 10, 2014
Thank you :)
I've solved the problem.

I will buy a book of C
0 bruno silva · August 10, 2014
I did like this:


int main()
{
    float primeiro;
    float segundo;
    char sinal;

    while (1) {
        puts("NumberA (*-+/) NumberB");
        scanf("%f%c%f", &primeiro, &sinal, &segundo);

        if (sinal == '+')
            printf("%f\n", primeiro+segundo);
        if (sinal == '-')
            printf("%f\n", primeiro-segundo);
        if (sinal == '*')
            printf("%f\n", primeiro*segundo);
        if (sinal == '/')
            printf("%f\n", primeiro/segundo);
    }
}
  • 1

C

126,606 followers
About

One of the most popular languages of all time.

Links
Moderators
Bucky Roberts Administrator