2015-03-01 2 views
-3

Итак, у меня есть этот код, но мне что-то не хватает, и я не могу его получить. Дело в том, чтобы предложить пользователю выбрать. Они выбирают пищу, которую они хотят заказать, и она сообщает им, что она добавлена. Когда пользователь нажимает 0, программа заканчивается, говоря, что общее из всех элементов, которые они выбрали. По какой-то причине, когда я попал в конец, он просто указывает общее количество последнего добавленного элемента. Любые идеи о том, как исправить это, чтобы итоговые суммы складывались?Справка о программировании - добавление значений вместе

#include<stdio.h> 

#define SALES_TAX .06 

int selection; 
double total; 
double amount; 
int i; 

double getPrice(int selection); 


void printOptionName(int selection); 


void printMenu(); 


double getPrice(int selection){ 

    if (selection == 1){ 
     amount = 5.99; 
    } else if (selection == 2){ 
     amount = 6.99; 
    } else if (selection == 3){ 
     amount = 7.99; 
    } else if (selection == 4){ 
     amount = 10.50; 
    } else if (selection == 5){ 
     amount = 3.50; 
    } 

} 

void printOptionName(int selection){ 

    if (selection == 0){ 
     printf("\nYour total is: "); 
    } else if (selection == 1){ 
     printf("\nAdded a Small Pizza\n\n"); 
    } else if (selection == 2){ 
     printf("\nAdded a Medium Pizza\n\n"); 
    } else if (selection == 3){ 
     printf("\nAdded a Large Pizza\n\n"); 
    } else if (selection == 4){ 
     printf("\nAdded an order of Wings\n\n"); 
    } else if (selection == 5){ 
     printf("\nAdded a Drink\n\n"); 
    } else 
     printf("Not a valid selection. Please select one of the following options: \n"); 
} 


void printMenu(){ 

printf("0. (Complete Order)\n"); 
printf("1. Small Pizza ****** 5.99\n"); 
printf("2. Medium Pizza ****** 6.99\n"); 
printf("3. Large Pizza ****** 7.99\n"); 
printf("4. Wings ****** 10.50\n"); 
printf("5. Drink ****** 3.50\n"); 
printf("Enter the Number of your selection: \n"); 

} 

int main(){ 

    printMenu(); 
    scanf("%d", &selection); 
    printOptionName(selection); 
    getPrice(selection); 

    while (selection != 0){ 
     printMenu(); 
     scanf("%d", &selection); 
     printOptionName(selection); 
     getPrice(selection); 
    } 

    for (i = 0; i <= selection; i++){ 
     total = total + amount; 
    } 

    printf("%lf\n", total); 

    return 0; 
} 
+2

Вы не храните выбранные предметы в любом месте; вы можете сделать 'total = total + getPrice (selection);' в цикле while, а затем просто распечатать 'total' после окончания поиска и пропустить for-loop. – jpw

+3

'getPrice' говорит, что возвращает' double', но в нем нет инструкции 'return'. Разве ваш компилятор не предупреждает вас об этом? – Barmar

+0

Я понял это! Я возвратил 'amount' из функции getPrice, и я использовал' total = total + getPrice (selection); 'для его обновления. Спасибо, парни! –

ответ

1

глобальные переменные - это просто нехороший способ пойти. обратите внимание, что вы не используете selection в printmenu(), например; вы можете передать необходимые данные в качестве аргументов функции. Кроме того, вы, кажется, передаете по ссылке в функции, которая проходит по значению. Обратите внимание, что ваша программа не останавливается, если она относится к оператору else в printOptionName() или в getPrice(), выбор по-прежнему будет 0 ...