简体   繁体   中英

How to make my if statement output the correct printf C program

In the code below I have made a program that can make the amount of money you put in transfer into words. For example, "1234.56" turn into "One Thousand Two Hundred Thirty Four and ... 56 Cents". The thing is that when I try to input the amount "0.01" into my scanf , the output becomes "Dollars and ... 1 Cents" when it should output "Zero Dollars and ... 1 Cent". 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 (a > 0){ 
            printNum(a);  
            printf("Thousand ");
        }
        if (b > 0){
            printNum(b);
            printf("Hundred ");
        }
        printNum2(c);   
        if (d >= 0){
            printNum(d);
            printf("Dollars and ... ");
        }
        else if (c == 0 && b == 0 && a == 0){
            printf("Zero 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 ");
}

You can use nested if else . First check if it is zero dollars, else carry out your process. Try something like this:

if (c == 0 && b == 0 && a == 0){
   printf("Zero Dollars and ... ");
}
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 ... ");
   }
}

instead of

if (a > 0){ 
   printNum(a);  
   printf("Thousand ");
}
if (b > 0){
   printNum(b);
   printf("Hundred ");
}
printNum2(c);   
if (d >= 0){
   printNum(d);
   printf("Dollars and ... ");
}
else if (c == 0 && b == 0 && a == 0){
   printf("Zero Dollars and ... ");

as in your code the if(d>=0) satisfies, it would never enter the else if statement ( else if skips if any previous statement is true).

VERY quick look, but:

if (d > 0){
    .....

Again, this was a QUICK look and I didn't test it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM