/*The conversion rates of five currencies equivalent to one US dollar*/ #include <stdio.h> #include <stdlib.h> int main(void) { int choice; int currency; float USD, UK, HK, EUR, NZ, AUS; char buffer[30]; /******************************************** ******Current Currency Exchange Rates******* * * British Pound(UK) 0.5408 6/15 8:50pm * Hong Kong Dollar (HK) 7.7617 6/15 8:50pm * Euro (EUR) 0.7914 6/15 8:50pm * New Zealand (NZ) Dollar 1.6079 6/15 8:50pm * Australian Dollar (AUS) 1.3556 6/15 8:50pm * United States Dollar (US) * **********************************************/ USD = 1.00; UK = 0.5408; HK = 7.7617; EUR = 0.7914; NZ = 1.6079; AUS = 1.3556; do // main loop runs until choice 0 is entered { /*Version and title of program and menu selection*/ printf("\n\n Welcome to Currency Conversion Utility v. 4.2.0 \n\n\n"); printf("Please select the currency type you would like to convert into US dollars.\n\n"); printf("1. for British Pounds \n"); printf("2. for Hong Kong Dollars \n"); printf("3. for Euros \n"); printf("4. for New Zealand Dollars \n"); printf("5. for Australian Dollars \n\n"); printf("Press 0 and then return to exit the Currency Converter \n"); choice = 6; /* must be initialized to an invalid value*/ /* it's not initialized the first time, it might be in the range of 1..5*/ do /* 1st input loop for the choice*/ { printf("\n\nEnter the number of your choice: Than hit Enter \n\n\n"); /*reads the characters from the file associated with fp into the string pointed to.*/ fgets(buffer, sizeof(buffer), stdin); /* allows user selcetion of type of Currency to convert and Error Checking for Numeric Values only*/ if ( ( sscanf(buffer, "%u", &choice) == 0) || choice > 5 || choice < 0 ) { printf("\n\n\a Error please select agian \n"); } } while(choice < 0 || choice > 5); if ( choice > 0 ) { /* no need to ask for the amount if exit was selected*/ currency = 100000; /* must be initialized to an invalid value*/ do /* 2nd input loop for the amount*/ { printf("\n\n\nEnter the amount you want to convert to U.S. Dollars: Than hit Enter \n\n"); fgets(buffer, sizeof(buffer), stdin); /* Allows input of currency amount and Error Checking for Numeric Values only*/ if ( ( sscanf(buffer, "%d", ¤cy) == 0) || currency > 99999 || currency < 1 ) { printf("\n\n\a This is an Erroneous amount based on your input\n"); printf(" please enter a numeric value"); } } while(currency > 99999 || currency < 0); /* changed the condition to int values*/ } switch(choice) { case 1: printf("\n\n You will have %.2f US dollars \n\n", USD/UK*currency); break; case 2: printf("\n\n You will have %.2f US dollars \n\n", USD/HK*currency); break; case 3: printf("\n\n You will have %.2f US dollars\n\n", USD/EUR*currency); break; case 4: printf("\n\n You will have %.2f US dollars \n\n", USD/NZ*currency); break; case 5: printf("\n\n You will have %.2f US dollars \n\n", USD/AUS*currency); break; case 0: break; return 0; } } while(choice!=0 && currency != 0); /* saves the second switch.*/ /* the switch would not work if I had changed currency to float*/ puts("You have entered 0 and selected to exit the program."); puts("Thank you for using Currency Converter."); puts("bye."); puts("press enter."); getchar(); return 0; }
if ( ( sscanf(buffer, "%d", ¤cy) == 0) || currency > 99999 || currency < 1 ) { ///////////////////////////////////////////////////// printf("\n\n\a This is an Erroneous amount based on your input\n");
C Syntax (Toggle Plain Text)
if ( ( sscanf(buffer, "%d", ¤cy) == 0) || currency > 99999 || currency < 1 ) { ///////////////////////////////////////////////////// printf("\n\n\a This is an Erroneous amount based on your input\n");
First I'd try placing an output statement to indicate the value of currency and buffer at the place where the /////////////////////////// is. If the values of currency and buffer aren't what you expect, then track down why not.
/*The conversion rates of five currencies equivalent to one US dollar*/ #include <stdio.h> #include <stdlib.h> int main(void) { int choice; int currency; float USD, UK, HK, EUR, NZ, AUS; char buffer1[30]; char buffer2[90]; /******************************************** ******Current Currency Exchange Rates******* * * British Pound(UK) 0.5408 6/15 8:50pm * Hong Kong Dollar (HK) 7.7617 6/15 8:50pm * Euro (EUR) 0.7914 6/15 8:50pm * New Zealand (NZ) Dollar 1.6079 6/15 8:50pm * Australian Dollar (AUS) 1.3556 6/15 8:50pm * United States Dollar (US) * **********************************************/ USD = 1.00; UK = 0.5408; HK = 7.7617; EUR = 0.7914; NZ = 1.6079; AUS = 1.3556; do // main loop runs until choice 0 is entered { /*Version and title of program and menu selection*/ printf("\n\n Welcome to Currency Conversion Utility v. 4.2.0 \n\n\n"); printf("Please select the currency type you would like to convert into US dollars.\n\n"); printf("1. for British Pounds \n"); printf("2. for Hong Kong Dollars \n"); printf("3. for Euros \n"); printf("4. for New Zealand Dollars \n"); printf("5. for Australian Dollars \n\n"); printf("Press 0 and then return to exit the Currency Converter \n"); choice = 6; /* must be initialized to an invalid value*/ /* it's not initialized the first time, it might be in the range of 1..5*/ do /* 1st input loop for the choice*/ { printf("\n\nEnter the number of your choice: Than hit Enter \n\n\n"); /*reads the characters from the file associated with fp into the string pointed to.*/ fgets(buffer1, sizeof(buffer1), stdin); /* allows user selection of type of Currency to convert and Error Checking for Numeric Values only*/ if ( ( sscanf(buffer1, "%u", &choice) == 0) || choice > 5 || choice < 0 ) { printf("\n\n\a Error please select again \n"); } } while(choice < 0 || choice > 5); if ( choice > 0 ) { /* no need to ask for the amount if exit was selected*/ currency = 100000; /* must be initialized to an invalid value*/ // do /* 2nd input loop for the amount*/ { printf("\n\n\nEnter the amount you want to convert to U.S. Dollars: Than hit Enter \n\n"); fgets(buffer2, sizeof(buffer2), stdin); /* Allows input of currency amount and Error Checking for Numeric Values only*/ // if ( (sscanf(buffer, "%u", ¤cy) == 0) || currency > 99999 || currency < 1 ) scanf(buffer2, "%u", ¤cy); if(currency > 99999 || currency < 0 ) { printf("\n\n\a This is an Erroneous amount based on your input\n"); printf(" please enter a numeric value"); } else if(currency < 99999 || currency > 0) { printf("lets hope this works"); } } // while(currency > 99999 || currency < 0); /* changed the condition to int values*/ } switch(choice) { case 1: printf("\n\n You will have %.2f US dollars \n\n", USD/UK*currency); break; case 2: printf("\n\n You will have %.2f US dollars \n\n", USD/HK*currency); break; case 3: printf("\n\n You will have %.2f US dollars\n\n", USD/EUR*currency); break; case 4: printf("\n\n You will have %.2f US dollars \n\n", USD/NZ*currency); break; case 5: printf("\n\n You will have %.2f US dollars \n\n", USD/AUS*currency); break; case 0: break; return 0; } } while(choice!=0 && currency != 0); /* saves the second switch.*/ /* the switch would not work if I had changed currency to float*/ puts("You have entered 0 and selected to exit the program."); puts("Thank you for using Currency Converter."); puts("bye."); puts("press enter."); getchar(); return 0; }
I compiled and ran your code and it worked as expected for me no problem. What exaclty are you inputing and what exactly is the response you're getting?
Oops you posted just before me. The code runs *with* the second do loop in tact just fine for me, I literaly just pasted your first posted code straight into a main.c and compiled it, and it ran as expected first time, if I put in dodgy input I get the error message, if the inputs ok I get the conversion.
| DaniWeb Message | |
| Cancel Changes | |