Basic program returning an unexpected value

40 Views Asked by At

I've written a program to do some basic operations on a long number from the user. Depending on whether the final product ends in a 0 or not, the program printfs "valid" or "invalid". I tried it with some 10 digit numbers and it worked fine, but anything with 11 digits or higher just returns "Floating point exception". Do I need to change my syntax in some way to accommodate longer numbers?

int main(void)
{
    long i = 0;
    long b;
    int m = 10;
    int n = 1;
    long number = get_long("Number?\n");
    do
    {
        long a = number % m;
        b = number - a;
        long c = b % (m * 10);
        long d = c / m;
        long e = d *2;
        if (e < 9)
        {
            i = i + e;
        }
        else
        {
            i = i + (e - 10 + 1);
        }
        
        {
            m = m * 100;
        }
    }
    while (b > 0);
    do
    {
        long a = number % n;
        b = number - a;
        long c = b % (n * 10);
        long d = c / n;
        long e = d *2;
        if (e < 9)
        {
            i = i + e;
        }
        else
        {
            i = i + (e - 10 + 1);
        }
        
        {
            n = n * 100;
        }
    }
    while (b > 0);
    int f = i % 10;
    if (f == 0)
    {
        printf("valid");
    }
    else
    {
    printf("invalid\n");
    }
}
0

There are 0 best solutions below