Why does my program give me the excess output? C program

Derrick Rose

I've made a program that is a cheque generator. Whatever amount you input in the scanf will output in words. For example if I were to to input "1234.56" My output will be "One Thousand Two Hundred Thirty Four Dollars and ... 56 Cents", or if I wanted to input the amount "0.01" the output will be "Zero Dollars and ... 1 Cents". The program works perfectly, however there is a minor issue, if I wanted to input the amount "9909" it will output "Nine Thousand Nine Hundred Ninety Nine Dollars and ... 0 Cents". The output should be "Nine Thousand Nine Hundred Nine Dollars and ... 0 Cents". Please help!

The code is as follows:

#include <stdio.h>

void printNum(int);
void printNum2(int);

int main()
{

    int a = 0;
    int b = 0;
    int c = 0;
    int d = 0; 
    int num = 0;
    int printcents; //To convert the float "cents" to an integer.

    float inclusive;
    float cents;

    printf("Welcome to the IPC144 Cheque Generator!!\n");
    printf("PAY TO THE ORDER OF... amahmood29 (018359133)\n");
    printf("Enter a monetary value from $0.01 to $9999.99 inclusive: ");
    scanf("%f", &inclusive);

    if(inclusive < 0.00 || inclusive >= 10000.00) {
        printf("Sorry, cannot create cheque for that amount, try again next time!\n");
    }
    else
    {                                             
        a = inclusive / 1000;                          //This data is replacing our variable by diving whatever the vaulue is by either 1000, 100, 10.
        inclusive = inclusive - (a*1000);
        b = inclusive / 100; 
        inclusive = inclusive - (b*100);
        if ( inclusive > 19 ){
            c = inclusive / 10; 
            inclusive = inclusive - (c*10);
        }
        else
        {
            c = inclusive;
            d = 0;
        }
        d = inclusive;
        num = inclusive;
        cents = (inclusive - num)*100; //To calculate our "Cents" with numerals.
        printcents = cents;


        /*Printing if the variables are in the thousands, hundreds, tens or ones categories.*/
        if (c == 0 && b == 0 && a == 0){
        printf("Zero Dollars and ... %d Cents\n", printcents);
    }
    else{
        if (a > 0){ 
            printNum(a);  
            printf("Thousand ");
        }
        if (b > 0){
            printNum(b);
            printf("Hundred ");
        }
        printNum2(c);   
        if (d >= 0){
            printNum(d);
            printf("Dollars and ... ");
        }

        printf("%d", printcents);
        printf(" Cents\n");
    }
}
}
void printNum(int x)  //Created functions to easily output various if statements.
{

    if ( x == 1)
        printf("One ");
    else if ( x == 2)
        printf("Two ");
    else if (x == 3)
        printf("Three ");
    else if (x == 4) 
        printf("Four ");
    else if (x == 5)
        printf("Five ");
    else if (x == 6)
        printf("Six ");
    else if (x == 7)
        printf("Seven ");
    else if (x == 8)
        printf("Eight ");
    else if (x == 9)
        printf("Nine ");

    }

void printNum2(int x)
{
    if ( x == 10)
        printf("Ten ");
    else if ( x == 11)
        printf("Eleven ");
    else  if ( x == 12)
        printf("Twelve ");
    else if ( x == 13)
        printf("Thirteen ");
    else if (x == 14)
        printf("Fourteen ");
    else if (x == 15)
        printf("Fifteen ");
    else if (x == 16)
        printf("Sixteen ");
    else if (x == 17)
        printf("Seventeen ");
    else if (x == 18)
        printf("Eighteen ");
    else if (x == 19)
        printf("Nineteen ");
    else if (x == 2)
        printf("Twenty ");
    else if (x == 3)
        printf("Thirty ");
    else if (x == 4)
        printf("Forty ");
    else if (x == 5)
        printf("Fifty ");
    else if (x == 6)
        printf("Sixty ");
    else if (x == 7)
        printf("Seventy ");
    else if (x == 8)
        printf("Eighty ");
    else if (x == 9)
        printf("Ninety ");
}

I have been coding for a month now so I apologize for the simple errors.

Scott Hunter

After you have calculated b and adjusted inclusive so it is now 9, you get to your else case, which sets c to 9 (hence the Ninety output) and d to 0, but immediately afterwards sets d to 9 (hence the Nine in the output). I think you mixed up c and d in the else case.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

Why my Racket program does not give me any output?

Why does this program only give me output the first case of an if conditional?

C++ Why does this program does not give any output?

Why does this C program give me an missing integer from an For loop?

Why does my C program give different outputs in different compilers?

Why does list in program give an unexpected output?

Why does my C program keep giving me 1 as the error?

Why this Ansi C program does not give result?

Why does my program give the wrong output once you have clicked a button?

program in which there is high iterations loops in C doesn't give me an output .. why?

The program does'nt give output

Why does my program output a huge decimal?

Why does my attempt to access a MariaDB in my Java program get give me an 'access denied' exception even tho my password is right?

Java Program does not give the output for values of n>6, Why?

Why does printf(i) give 0 as output in this program?

Why does this C program to calculate string's length give a wrong output?

Why does Bash give "No such file or directory" for a program that's in my PATH?

Why does my program for the Chudnovsky algorithm give the wrong result?

Why does my C program give error : warning: implicit declaration of function ‘palindrome’ [-Wimplicit-function-declaration]

C Program: Why does this array have this output?

Why does my output give me the wrong amount of each number?

Why does my C program crash?

Why does my shell script make my C++ program output 0?

Why does this program give a Invalid memory access error in C?

Why does writing this program output me weird strings?

Switch case program does not give the output

My program is not producing an output, why is this?

Why does my program ask me to input a value for self?

Why my following program does not print any output ( ArrayList )?