Wyświetlanie menu dwa razy w C, dlaczego ?

0

Mam następujący kod:

#include <stdio.h>
#define C_ARBUZ 1.25 //ceny towarów
#define C_BURAK 0.65
#define C_CEBULA 0.89
#define RABAT 0.05
#define K_5 3.50 //koszty przesyłki, do 5 kg, do 20 kg i więcej
#define K_20 10.00
#define K_W 8.00
void Menu(void);
 
int main(void){
    float forsa = 0;
    char option;    
    int ile_a = 0;
    int ile_b = 0;
    int ile_c = 0;
    int waga = 0;
    float trans = 0;
    float rabat = 0;
    while(1){
        Menu();
        scanf("%c",&option);
        switch(option){
            case 'A': 
                printf("Podaj ilość w kg:");
                scanf("%d",&ile_a);
                break;
            case 'B':
                printf("Podaj ilość w kg:");
                scanf("%d",&ile_b);
                break;
            case 'C':
                printf("Podaj ilość w kg:");
                scanf("%d",&ile_c);
                break;
            case 'K':
                waga = ile_a+ile_b+ile_c;
                forsa = ile_a*C_ARBUZ+ile_b*C_BURAK+ile_c*C_CEBULA;
                if(waga==0)trans==0;
                else{
                    if(waga>5){
                        if(waga>20) trans=K_W+0.1*waga;    
                        else trans=K_20;
 
                    }    
                    else trans=K_5;    
                }    
                if(forsa>100)rabat=RABAT*forsa;
                printf("\nKoszt zamówienia:%.2f\nKoszt przesyłki:%.2f\nCeny warzyw:\nArbuz - %.2f\nBurak - %.2f\nCebula - %.2f\n",                  forsa,trans,C_ARBUZ,C_BURAK,C_CEBULA);
                printf("Wysokość rabatu:5\% (dla zamówienia powyżej 100kg)\n");
                printf("Ilość zamówionego towaru(kg): %d - arbuz, %d - burak, %d - cebula.\n",ile_a,ile_b,ile_c);
                printf("W sumie waga przesyłki %d kg\n",waga);
                if(rabat>0) printf("Rabat:%.2f\n",rabat);
                printf("Całkowity koszt tamówienia:%.2f\n",forsa-rabat+trans);
                return 0;
                break;
            default:
                printf("Wybierz odpowiednią opcję !\n\n");
                break;
        }    
 
 
    }
}
//definicje funkcji
 
void Menu(void){
    printf("################MENU#################\nWybierz opcję\n");
    printf("A - Arbuzy\tB - Buraki\tC - Cebule\tK- Koniec zamówienia\n\n");
}

Mam następujący problem. Po pierwszym wybraniu opcji, powiedzmy wybieramy A, podajemy ilość kg i tutaj powinno się pojawić znowu wejściowe menu no i w zasadzie tak się dzieje, ale pojawia się ono dwa razy. Byłbym wdzięczny za podpowiedź dlaczego tak się dzieje. Z góry dziękuje.

0
scanf("%c ",&option);
scanf("%d ",&ile_a);
0

Hmm, rzeczywiście wyświetla menu tylko raz. Pytanie tylko czy ctrl+d w tej chwili jest jedynym sposobem zakończenia wprowadzania danych ? No i drugie dlaczego wcześniej wyświetlało dwa razy ?

2

Ad1. Dodaj w menu W - Wyjście z programu;
Ad2. Otwórz dokumentacja i poczytaj co oznacza ta spacja.

1 użytkowników online, w tym zalogowanych: 0, gości: 1