Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.68 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.  
  29.       /* 1.3.1 Efterfråga valutakurs */
  30.       /* 1.3.2 Sätt valutakurs */
  31.       exchange_rate = read_exchange_rate();
  32.     }
  33.  
  34.     /* 1.4 Om valet är att konvertera priser */
  35.     else if(choice == 2){
  36.       double sum;
  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(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:    read_exchange_rate
  92.  * Beskrivning: Läser in det nya exchange rate värdet och returnerar det.
  93.  * Input:       Inget.
  94.  * Output:      Returnerar angiven exchange rate.
  95.  */
  96.  
  97. double read_exchange_rate(void){
  98.    double f_number;
  99.  
  100.    /* 1.3.1 Efterfråga valutakurs */
  101.    printf("Give exchange rate: ");
  102.    scanf("%lf", &f_number);
  103.  
  104.    return f_number;
  105. }
  106.  
  107. /* Funktion:    sum_prices
  108.  * Beskrivning: Adderar angivna priser tills användaren vill avsluta Returnerar
  109.  *              sedan summan.
  110.  * Input:       Inget.
  111.  * Output:      Summan
  112.  */
  113.  
  114. double sum_prices(void){
  115.   double price;
  116.   double sum;
  117.  
  118.   /* 1.4.1 Summera priser så länge användaren ej avbryter */
  119.   do {
  120.     /* 1.4.1.1 Efterfråga pris (eller klar med inmatning) */
  121.     price = give_price();
  122.  
  123.     if (price >= 0){
  124.       sum += price;
  125.     }
  126.  
  127.   } while(price >= 0);
  128.  
  129.   return sum;
  130. }
  131.  
  132. /* Funktion:    give_price
  133.  * Beskrivning: Läser in angivet pris och returnerat det.
  134.  * Input:       Inget.
  135.  * Output:      Returnerar priset.
  136.  */
  137.  
  138. double give_price(void){
  139.   double price;
  140.  
  141.   printf("Give price (finish with < 0): ");
  142.   scanf("%lf", &price);
  143.  
  144.   return price;
  145. }
  146.  
  147. /* Funktion:    print_sum
  148.  * Beskrivning: Skriver ut summan i utlänsk och Svensk valuta.
  149.  * Input:       exchange_rate & summan
  150.  * Output:      Snget.
  151.  */
  152.  
  153. void print_sum(double exchange_rate, double sum){
  154.   printf("\nSum in foreign currency: %.2f\n", sum);
  155.   printf("Sum in SEK: %.2f\n", exchange_rate * sum);
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement