Hello,
I am new to this forum but noticed you all seem very helpful. I am learning C-programming and been given a task to complete a currency conversion program. I have about exhasuted all my level of knowledge and have used up the books I have as well.
If someone here could please review this program and perhaps let me know what I have done wrong here that would be great.
The issue is that the program is to allow for a user to select a currency value from the displayed list, which as far as I can tell it will.
Than the user is to input a value to be converted, it is here that I have missed something as everytime I now enter a value I get back my error message which was coded, at least was my plan to check for only numeric values.
Again any help would be great!!!
/*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);
/* 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; // see above
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);
/* Error Checking for Numeric Values only*/
if ( ( sscanf(buffer, "%d", ¤cy) == 0) || currency > 99999 || currency < 1 )
{
printf("\n\n\a This is an Errneous amount based on your input\n");
printf(" please enter a numeric value");
}
}
while(currency > 99999 || currency < 1); /* 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("bye.");
puts("press enter.");
getchar();
return 0;
}
I think what is possibly the error is that the value inputted is not viewed by the code as a valid input no matter what is entered.
Allow me to thank you now for your help.
Randy
:rolleyes: