Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.46 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /* Funktionsdeklarationer */
  4. void print_menu(double exchange_rate);
  5. int read_number(void);
  6. double read_exchange_rate(void);
  7. double sum_prices(void);
  8. double give_price(void);
  9. void print_sum(double exchange_rate, double sum);
  10.  
  11. int main(void){
  12.   double exchange_rate = 1;
  13.   int choice;
  14.  
  15.   printf("\nYour shopping assistant\n");
  16.  
  17.   /* 1. Så länge användaren inte valt att avsluta programmet,
  18.         upprepa följande: */
  19.   do {
  20.     /* 1.1 Skriv ut menyn */
  21.     print_menu(exchange_rate);
  22.  
  23.     /* 1.2 Läs in val */
  24.     choice = read_number();
  25.  
  26.     /* 1.3 Om valet är att sätta valutakurs */
  27.     if(choice == 1){
  28.       /* 1.3.1 Efterfråga valutakurs */
  29.       /* 1.3.2 Sätt valutakurs */
  30.       exchange_rate = read_exchange_rate();
  31.     }
  32.  
  33.     /* 1.4 Om valet är att konvertera priser */
  34.     else if(choice == 2){
  35.       double sum;
  36.       int local_exchange_rate = 1;
  37.  
  38.       /* 1.4.1 Summera priser så länge användaren ej avbryter */
  39.         /* 1.4.1.1 Efterfråga pris (eller klar med inmatning) */
  40.         /* 1.4.1.2 Uppdatera summan (om det är ett giltigt pris) */
  41.       sum = sum_prices();
  42.  
  43.       /* 1.4.2 Skriv ut summan i lokal valuta och i svenska kronor */
  44.       print_sum(local_exchange_rate, sum);
  45.     }
  46.  
  47.     /* 1.5 Om valet är ogiltigt */
  48.     else if(choice != 3){
  49.       /* 1.5.1 Skriv ut att det var ett ogiltigt val */
  50.       printf("Not a valid choice!\n");
  51.     }
  52.   } while(choice != 3);
  53.  
  54.   /* 2 Avsluta programmet */
  55.   printf("End of program!\n");
  56.  
  57.   return 0;
  58. }
  59.  
  60. /* Funktionsdefinitioner */
  61.  
  62. /* Funktion:    print_menu
  63.  * Beskrivning: Skriver ut menyn.
  64.  * Input:       Växlingskursen.
  65.  * Output:      Returnerar inget. Skriver ut menyn.
  66.  */
  67.  
  68. void print_menu(double exchange_rate){
  69.   printf("\n1. Set exchange rate in SEK ");
  70.   printf("(current rate: %.2f)\n", exchange_rate);
  71.   printf("2. Convert prices from the foreign currency\n");
  72.   printf("3. End\n\n");
  73. }
  74.  
  75. /* Funktion:    read_number
  76.  * Beskrivning: Läser in ett heltal som returneras
  77.  * Input:       Inget.
  78.  * Output:      Returnerar det inlästa talet.
  79.  */
  80.  
  81. int read_number(void){
  82.    int number;
  83.  
  84.    printf("Give your choice (1 - 3): ");
  85.    scanf("%d", &number);
  86.    printf("\n");
  87.  
  88.    return number;
  89. }
  90.  
  91. /* Funktion:    f_read_number
  92.  * Beskrivning: Läser in ett decimaltal som returneras
  93.  * Input:       Inget.
  94.  * Output:      Returnerar det inlästa talet.
  95.  */
  96.  
  97. double read_exchange_rate(void){
  98.    double f_number;
  99.  
  100.    printf("Give exchange rate: ");
  101.    scanf("%lf", &f_number);
  102.  
  103.    return f_number;
  104. }
  105.  
  106. /* Funktion:    sum_prices
  107.  * Beskrivning: Adderar angivna priser tills användaren vill avsluta
  108.  * Input:       Inget.
  109.  * Output:      Inget.
  110.  */
  111.  
  112. double sum_prices(void){
  113.   double price;
  114.   double sum;
  115.  
  116.   do {
  117.     price = give_price();
  118.  
  119.     if (price >= 0){
  120.       sum += price;
  121.     }
  122.  
  123.   } while(price >= 0);
  124.  
  125.   return sum;
  126. }
  127.  
  128. /* Funktion:    give_price
  129.  * Beskrivning: Läser in angivet pris
  130.  * Input:       Inget.
  131.  * Output:      Returnerar priset.
  132.  */
  133.  
  134. double give_price(void){
  135.   double price;
  136.  
  137.   printf("Give price (finish with < 0): ");
  138.   scanf("%lf", &price);
  139.  
  140.   return price;
  141. }
  142.  
  143. /* Funktion:    print_sum
  144.  * Beskrivning: Skriver ut summan i utlänsk och Svensk valuta
  145.  * Input:       Inget.
  146.  * Output:      inget.
  147.  */
  148.  
  149. void print_sum(double exchange_rate, double sum){
  150.   printf("\nSum in foreign currency: %.2f\n", sum);
  151.   printf("Sum in SEK: %.2f\n", exchange_rate * sum);
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement