Comment faire en sorte que ma sortie ne montre que ce qui est nécessaire avec mon programme de générateur de chèques pour c

J’ai créé un programme qui peut afficher le chiffre saisi, mais le convertira en mots au lieu de chiffres, par exemple si vous saisissez “1234.56”, il sera converti en “Mille deux cent trente quatre dollars” et .. 56 cents “. Les centimes doivent toujours être en chiffres. Jusqu’à présent, tout fonctionne bien, mais si j’inscris un montant inférieur à mille, j’obtiendrai les mots en trop tels que “Mille” ou “Cent”. Par exemple, si je saisis “15,77”, ma sortie sera “Mille cent quinze dollars et … 77 cents”. Je ne veux pas que les Mille ou les Cent soient là, sans ceux-là, ce serait parfait!

Le code est comme suit:

#include  void printNum(int); void printNum2(int); void printNum3(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 = 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; printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); printNum(b); printf("Hundred "); printNum2(c); printf(""); printNum3(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("Ninteen "); 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 "); } void printNum3(int x) { 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 "); } 

Cela fait maintenant un mois que je code, alors pourquoi s’il semble que j’ai commis de simples erreurs?

Vous devez append des conditions autour de vos printfs:

 if (a > 0) { printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); } 

Le problème est que vous imprimez sans réserve les “Mille”, “Cent”, etc …

  printNum(a); //Printing is the variables are in the thousands, hundreds, tens or ones categories. printf("Thousand "); printNum(b); printf("Hundred "); printNum2(c); printf(""); printNum3(d); printf("Dollars and ... "); printf("%d", printcents); printf(" Cents\n"); 

si le nombre que vous envoyez à printNum est zéro, vous ne voulez pas imprimer votre chaîne de texte, vous devez vérifier la condition suivante:

 /* call to printNum x */ if ( /* check if the parameter to printNum matches any case, seems to be if not zero){ printf(/* whatever ssortingng is appropriate */); } 

à titre d’exemple, disons que l’entrée était 512.26

512.26 / 1000 <<< qui devrait être 512.26 / 1000.f pour que les deux opérandes de la division soient des flottants

entraînera une valeur flottante de: 0.51226f NOT 0.0f

utiliser le sol (0.51226f) donnera 0.0f

Suggérez toujours d’appliquer la fonction floor () pour obtenir 0.0f

Même avec un float, une comparaison telle que if (valeur! = 0.0f) puis l’imprimer

fonctionnerait après l’application de la fonction floor ().