User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C section within the Software Development category of DaniWeb, a massive community of 402,462 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 2,962 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C advertiser: Programming Forums

New to C and needing some guidance

Join Date: Jul 2006
Posts: 3
Reputation: Sealteam56 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
Sealteam56 Sealteam56 is offline Offline
Newbie Poster

Re: New to C and needing some guidance

  #3  
Jul 6th, 2006
Originally Posted by Lerner
if ( ( sscanf(buffer, "%d", &currency) == 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.

I actually removed the second Do statements which now allows the program to process the conditions for currency and place inthe buffer. But still have issues in that the error msg, as indicitated continues to print and there seems to be no error checking at all as I can now enter any value with a output.

here is what the code now looks like

 
/*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", &currency) == 0) || currency > 99999 || currency < 1 )
                
                scanf(buffer2, "%u", &currency);
                
                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;
}

again, all seems somewhat correct except I can not understand why no matter what the code thinks that all values for currecny are false, but again after removing the do/while the program does continue to function, well kinda.

Randy
Reply With Quote  
All times are GMT -4. The time now is 3:59 pm.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC