Почему мой массив не увеличивается должным образом? - PullRequest
0 голосов
/ 11 декабря 2018

Я учусь в классе C ++, и у меня возникли проблемы с проектом.Идея проекта заключается в создании приложения для упорядочения с использованием структур и массивов.Насколько я могу судить, программа работает должным образом, за исключением того, сколько элементов каждого элемента человек заказал в моей функции printMenu.Если я ошибаюсь или если вы найдете больше ошибок, пожалуйста, сообщите мне.

Вот код:

#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;

struct dinnerItemType
{
    string dinnerItem;
    double dinnerPrice;
    int dinnerOrdered;
};

void getFood(dinnerItemType ourMenu[], int &size);
void printMenu(dinnerItemType ourMenu[], int size);
void printCheck(dinnerItemType ourMenu[], int size);

//Defines the global tax constant of 6%
const double TAX = 0.06;

int main()
{
    dinnerItemType ourMenu[150];
    int size = 0;

    getFood(ourMenu, size);

    printMenu(ourMenu, size);

    printCheck(ourMenu, size);


    system("pause");
    return 0;
}

void getFood(dinnerItemType ourMenu[], int &size)
{
    ourMenu[0].dinnerItem = "Chicken Sandwich";
    ourMenu[0].dinnerPrice = 4.45;
    ourMenu[0].dinnerOrdered = 0;

    ourMenu[1].dinnerItem = "Fries";
    ourMenu[1].dinnerPrice = 2.47;
    ourMenu[1].dinnerOrdered = 0;

    ourMenu[2].dinnerItem = "Truffle Fries";
    ourMenu[2].dinnerPrice = 0.97;
    ourMenu[2].dinnerOrdered = 0;

    ourMenu[3].dinnerItem = "Filet 8oz";
    ourMenu[3].dinnerPrice = 11.99;
    ourMenu[3].dinnerOrdered = 0;

    ourMenu[4].dinnerItem = "Fruit Basket";
    ourMenu[4].dinnerPrice = 2.44;
    ourMenu[4].dinnerOrdered = 0;

    ourMenu[5].dinnerItem = "Tea";
    ourMenu[5].dinnerPrice = 0.69;
    ourMenu[5].dinnerOrdered = 0;

    ourMenu[6].dinnerItem = "Water";
    ourMenu[6].dinnerPrice = 0.25;
    ourMenu[6].dinnerOrdered = 0;

    size = 7;
}

void printMenu(dinnerItemType ourMenu[], int size)
{

    int number;
    int amount;

    cout << "Welcome to the restraunt here are your menu items: \n";
    for (int i = 0; i < size; i++)
    {
        cout << (i + 1) << ")";
        cout << ourMenu[i].dinnerItem
             << "$"
             << ourMenu[i].dinnerPrice
             << endl;
    }

    cout << "To order just type in the number associated with the menu item and hit enter.\n"
         << "Once you have completed your order just type in 0 to go to checkout.\n";
    cin >> number;

    while (number != 0)
    {
        if (number >= 1 && number <= 8)
        {
            ourMenu[number - 1].dinnerOrdered++;
        }
        else
        {
            cout << "The number does not coorispond with a menu item please try again.\n";
        }

        cout << "To order just type in the number associated with the menu item and hit enter.\n"
             << "Once you have completed your order just type in 0 to go to checkout.\n";
        cin >> number;
    }
}

void printCheck(dinnerItemType ourMenu[], int size)
{
    double total = 0;

    cout << "Your Bill: ";

    for (int i = 0; i < size; i++)
    {
        if (ourMenu[i].dinnerOrdered > 0)
        {
            total += ourMenu[i].dinnerPrice;
        }
    }

    cout << "Tax: $ " << fixed << setprecision(2) << (total * TAX);
    cout << " Ammount Due: $" << (total + (total * TAX)) << endl;
    cout << "Thank you come again!" << endl;
}

1 Ответ

0 голосов
/ 11 декабря 2018

Эта строка:

total += ourMenu[i].dinnerPrice;

только добавляет стоимость одного приема пищи к общей сумме, независимо от того, сколько раз заказывается это питание.

Чтобы исправить это: просто умножьтецена по количеству заказов:

total += ourMenu[i].dinnerPrice * ourMenu[i].dinnerOrdered;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...