| | |
Currency Converter
Please support our C advertiser: Programming Forums - DaniWeb Sister Site
This problem is a typical homework question. The code presented here may contain some elements that may be a little "ahead of the game" in coursework, but it presents some of the basic elements that might be used in such an exercise.
#include <stdio.h> #include <string.h> const char Description[] = "Currency Conversion As of June 11, 2003 2:35am GMT"; void convert(double amount, const char *from, const char *to) { static const struct { const char *name; double rate; } Xchg[] = /* US Dollar conversion factor */ { { "USD", 1.0 }, { "Lire", 0.000603049 }, { "Yen", 0.008464602 }, { "Pound", 1.65123 }, { "Peso", 0.0940910 }, { "Canadian", 0.734061 }, }; size_t i,j; /* * Search for the name of the currency you want to convert from. */ for ( i = 0; i < sizeof Xchg / sizeof *Xchg; ++i ) { if ( strcmp(Xchg[i].name, from) == 0 ) { /* * Found the 'from' currency name; 'i' is the index of it. * Search for the name of the currency you want to convert to. */ for ( j = 0; j < sizeof Xchg / sizeof *Xchg; ++j ) { if ( strcmp(Xchg[j].name, to) == 0 ) { /* * Found the 'to' currency name; 'j' is the index of it. * Calculate the new value: multiply by the 'from' rate and * divide by the 'to' rate. */ double value = amount * Xchg[i].rate / Xchg[j].rate; printf("%g %s = %g %s\n", amount, from, value, to); return; } } printf("Cannot convert to \"%s\"\a\n", to); /* 'to' name not found */ return; } } printf("Cannot convert from \"%s\"\a\n", from); /* 'from' name not found */ } int main(void) { puts(Description); convert( 20.0, "USD", "Pound"); convert(100.0, "Yen", "Lire" ); convert( 20.0, "Euro", "Krone"); convert( 20.0, "USD", "Krone"); return 0; } /* my output Currency Conversion As of June 11, 2003 2:35am GMT 20 USD = 12.1122 Pound 100 Yen = 1403.63 Lire Cannot convert from "Euro" Cannot convert to "Krone" */
0
•
•
•
•
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!!!
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:
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!!!
C Syntax (Toggle Plain Text)
/*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:
Similar Threads
- currency converter in php (PHP)
- Currency Converter! (Java)
- Currency Converter - Need Help (C++)
- how to create currency converter (Java)
| Thread Tools | Search this Thread |
#include * append array arrays asterisks bash binarysearch calculate changingto char character cm copyimagefile creafecopyofanytypeoffileinc createprocess() database dynamic execv feet fgets file floatingpointvalidation fork forloop framework function getlogicaldrivestrin givemetehcodez global grade gtkwinlinux hacking histogram ide include incrementoperators input intmain() iso kernel keyboard kilometer km license linked linkedlist linux list lists locate logical_drives looping loopinsideloop. lowest matrix meter microsoft mqqueue number oddnumber odf opensource openwebfoundation overwrite owf pdf performance pointer posix probleminc process program programming radix recursion recv recvblocked research reversing scripting segmentationfault sequential single socket socketprogramming standard strchr string systemcall testing threads turboc unix urboc user variable wab whythiscodecausesegmentationfault windowsapi



