954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Need some help with putting a looping into a converter program.

Hey guys, I need some help with looping. I am writing a currency converter (who in begining programming isn't these days) and I want to have it loop so that I can it keep asking for another entry or make it quit. Here is what I have so far:

include <stdio.h> 
#include <stdlib.h>

/* Main Program */
int main(void)
{

float USD;
float CAD;
float EUR;
float GBP;
float CHF;
float YEN;
int input;
char q;

/*Title of program*/
printf("\t This program will convert foreign currency to US Dollars\n\n");

/*Assigning Values*/
 USD = 1.0; /* US Dollar*/
 CAD = 1.2257; /* Canadian Dollar*/
 EUR = 0.752162; /* European Euro */
 GBP = .51573; /* British Pound */
 CHF = 1.134; /* Swiss Franc*/
 YEN = 1.038; /* Japanese Yen*/

printf("Please choose form the following list of currency or press q to quit.\n"); 
printf("\n");
printf("[1] Canadian Dollar\n");
printf("[2] British Pound\n");
printf("[3] European Euro\n");
printf("[4] Swiss Franc\n");
printf("[5] Japanese Yen\n"); 
printf("\n");
scanf("%d", &input);


	/*switching statements */
	switch (input)
	{
	case 1 : 
	 printf("%1.6f Canadian Dollars is equal to %1.1f US Dollar.\n", CAD,USD);
	break;
	case 2 :
	 printf("%1.6f European Euro is equal to %1.1f US Dollar.\n", EUR,USD); 
	break;
	case 3 :
	 printf("%1.6f British Pound is equal to %1.1f US Dollar.\n", GBP,USD);
	break;
	case 4 : 
	 printf("%1.6f Swiss Franc is equal to %1.1f US Dollar.\n", CHF,USD);
	break;
	case 5 :
	 printf("%1.6f Japanese Yen is equal to %1.1f US Dollar.\n", YEN,USD); 
	break;
	}

scanf("%d");
return 0;
}
wardduncan
Newbie Poster
5 posts since Jan 2005
Reputation Points: 10
Solved Threads: 0
 

use a while loop checking if q is pressed. You havent actually used char, and are asking the user to input a letter or number, but only grabbing the number! I would convert to c++ and use iostream, I dont know the C equivalent

char input; // user will type, so input is a char!

while (input != 'q' || input != 'Q') // loops untill you put q or Q in input
{
   code here...
   I would use cin >> input;
   then a strtoi (i think that is how it is spelled) call to convert the char to a number
}
1o0oBhP
Posting Pro in Training
445 posts since Dec 2004
Reputation Points: 16
Solved Threads: 6
 

Unless you want to do precise error handling and throw a message if the user enters something other than q or Q, you can simply place the entire processing code into an infinite loop and break if scanf fails:

#include <stdio.h> 
#include <stdlib.h>

/* Main Program */
int main(void)
{
  float USD;
  float CAD;
  float EUR;
  float GBP;
  float CHF;
  float YEN;
  int input;

  /*Title of program*/
  printf("\t This program will convert foreign currency to US Dollars\n\n");

  /*Assigning Values*/
  USD = 1.0f; /* US Dollar*/
  CAD = 1.2257f; /* Canadian Dollar*/
  EUR = 0.752162f; /* European Euro */
  GBP = .51573f; /* British Pound */
  CHF = 1.134f; /* Swiss Franc*/
  YEN = 1.038f; /* Japanese Yen*/

  for (;;) {
    printf("Please choose form the following list of currency or press q to quit.\n"); 
    printf("\n");
    printf("[1] Canadian Dollar\n");
    printf("[2] British Pound\n");
    printf("[3] European Euro\n");
    printf("[4] Swiss Franc\n");
    printf("[5] Japanese Yen\n"); 
    printf("\n");
    if (scanf("%d", &input) != 1)
      break;

    /*switching statements */
    switch (input)
    {
    case 1 : 
      printf("%1.6f Canadian Dollars is equal to %1.1f US Dollar.\n", CAD,USD);
      break;
    case 2 :
      printf("%1.6f European Euro is equal to %1.1f US Dollar.\n", EUR,USD); 
      break;
    case 3 :
      printf("%1.6f British Pound is equal to %1.1f US Dollar.\n", GBP,USD);
      break;
    case 4 : 
      printf("%1.6f Swiss Franc is equal to %1.1f US Dollar.\n", CHF,USD);
      break;
    case 5 :
      printf("%1.6f Japanese Yen is equal to %1.1f US Dollar.\n", YEN,USD); 
      break;
    }
  }

  return 0;
}

That's the easiest solution. If you want something more structured and good error messages, it takes more effort, usually in the form of string input and validation followed by conversions.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

Thanks for your help. This is exactly what I needed. You made it look so easy.

wardduncan
Newbie Poster
5 posts since Jan 2005
Reputation Points: 10
Solved Threads: 0
 

This question has already been solved

Post: Markdown Syntax: Formatting Help
You