如何在c++中使用用户定义函数创建累加器

How do I create an accumulator in C++ using a user defined function?

本文关键字:定义 用户 函数 创建 累加器 c++      更新时间:2023-10-16

我试图保持销售的咖啡杯总数,我必须使用用户定义的函数来做到这一点。我已经尝试了许多变化所附的代码,但似乎没有工作。我做错了什么?我也是c++的新手,所以这就是为什么它看起来很业余!

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
const int SM_OZ = 8;
const int MD_OZ = 12;
const int LG_OZ = 16;
const double SM_PRICE = 1.19;
const double MD_PRICE = 1.49;
const double LG_PRICE = 1.89;
const double TAX = .0825;
void amtSold(int &smtCup, int &mdtCup, int &lgtCup);
int main()
{
    int selection;
    int smCup;
    int mdCup;
    int lgCup;
    int smtCup;
    int mdtCup;
    int lgtCup;
    smCup = 0;
    mdCup = 0;
    lgCup = 0;

    do 
    {
        cout << "COFFEE SHOP" << endl;
        cout << "1. Sell Coffee" << endl;
        cout << "2. Total Number of Cups Sold" << endl;
        cout << "3. Total Amount of Coffee Sold" << endl;
        cout << "4. Total Amount of Money made" << endl;
        cout << "0. Exit" << endl;
        cout << "Type a number to continue: ";
        cin >> selection;
        cout << endl;

        //loop through the solutions based on the user's selection
        switch (selection)
        {
        case 1:
            cout << "How many small cups of coffee: ";
            cin >> smCup;
            cout << "How many medium cups of coffee: ";
            cin >> mdCup;
            cout << "How many large cups of coffee: ";
            cin >> lgCup;
            system("cls");
            cout << fixed << setprecision(2) << endl;
            //Sale Coffee Receipt Page
            cout << "COFFEE SHOP" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "Price" << setw(18) << "Total" << endl;
            cout << "Small: " << setw(18) << smCup << setw(18) << SM_PRICE << setw(18) << smCup*SM_PRICE << endl;
            cout << "Medium: " << setw(17) << mdCup << setw(18) << MD_PRICE << setw(18) << mdCup*MD_PRICE << endl;
            cout << "Large: " << setw(18) << lgCup << setw(18) << LG_PRICE << setw(18) << lgCup*LG_PRICE << endl;
            cout << "Subtotal: " << setw(51) << (smCup*SM_PRICE)+(mdCup*MD_PRICE)+(lgCup*LG_PRICE) << endl;
            cout << "Tax: (8.25%)" << setw(49) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX << endl;
            cout << "Total: " << setw(54) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))+(((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX) << endl;
            cout << endl;
            cout << endl;
            break;
        case 2:
            //Total Number of Cups Sold
            cout << "REPORT - NUMBER OF COFFEE CUPS SOLD" << endl;
            amtSold(smtCup, mdtCup, lgtCup);
            cout << "SIZE" << setw(21) << "Number" << endl;
            cout << "Small: " << setw(18) << smCup << endl;
            cout << "Medium: " << setw(17) << mdCup << endl;
            cout << "Large: " << setw(18) << lgCup << endl;
            cout << endl;
            cout << endl;
            break;
        case 3:
            //Total Amount of Coffee Sold
            cout << "REPORT - AMOUNT OF COFFEE SOLD" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "OZ" << endl;
            cout << "Small: " << setw(18) << smCup << setw(18) << smCup*SM_OZ << endl;
            cout << "Medium: " << setw(17) << mdCup << setw(18) << mdCup*MD_OZ << endl;
            cout << "Large: " << setw(18) << lgCup << setw(18) << lgCup*LG_OZ << endl;
            cout << "Total: " << setw(36) << (smCup*SM_OZ) + (mdCup*MD_OZ) + (lgCup*LG_OZ) << endl;
            cout << endl;
            cout << endl;
            break;
        case 4:
            //Total Amount of Money made
            cout << "COFFEE SHOP - REPORT MONEY MADE" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "Price" << setw(18) << "Total" << endl;
            cout << "Small: " << setw(18) << smCup << setw(18) << SM_PRICE << setw(18) << smCup*SM_PRICE << endl;
            cout << "Medium: " << setw(17) << mdCup << setw(18) << MD_PRICE << setw(18) << mdCup*MD_PRICE << endl;
            cout << "Large: " << setw(18) << lgCup << setw(18) << LG_PRICE << setw(18) << lgCup*LG_PRICE << endl;
            cout << "Subtotal: " << setw(51) << (smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE) << endl;
            cout << "Tax: (8.25%)" << setw(49) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX << endl;
            cout << "Total: " << setw(54) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE)) + (((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX) << endl;
            cout << endl;
            cout << endl;
            break;
        case 0:
            system("cls");
            break;
        default:
            //notify the user that an invalid selection has been inputted
            cout << "You have made an invalid selection. Please choose a number from the list." << endl;
            cout << endl;
        }
    } while (selection != 0);

    system("pause");
    return 0;
}
void amtSold(int &smtCup, int &mdtCup, int &lgtCup)
{
    int smCup;
    int mdCup;
    int lgCup;
    smCup = 0;
    mdCup = 0;
    lgCup = 0;
    smtCup += smCup;
    mdtCup += mdCup;
    lgtCup += lgCup;
}

您可能知道,您没有跟踪您销售的每种尺寸的咖啡杯(即smtCup, mdtCup和lgtCup)的数量。

我假设这些变量表示每种尺寸的杯子总数,您可能希望在变量声明步骤中添加一些注释。您需要将变量初始化为0:

int smtCup = 0;
int mdtCup = 0;
int lgtCup = 0;

由于这是一个相当简单的程序,您可以在不使用amtSold函数的情况下执行累加,因此您可以删除它。

那么,在switch语句的情形1中,您需要在每次更新值时更新smtCup、mdtCup和lgtCup。请注意,smCup、mdCup和lgCup仅用于本程序的输入。

cout << "How many small cups of coffee: ";
cin >> smCup;
cout << "How many medium cups of coffee: ";
cin >> mdCup;
cout << "How many large cups of coffee: ";
cin >> lgCup;
smtCup += smCup;
mdtCup += mdCup;
lgtCup += lgCup;

从这里开始,在其他情况下,您可以通过调用smtCup、mdtCup和lgtCup来打印小杯、中杯和大杯的总数!将案例2-4中的smCup、mdCup和lgCup修改为smtCup、mdtCup和lgtCup。希望这对你有帮助!

编辑:不能评论,所以我只能说你在这里受欢迎!
谢谢KTing!我很失望地发现,使用较早版本的代码,我离正确答案更近了。我不知道为什么它不能初始化,所以我开始绝望,尝试一些我95%肯定不会成功的事情。我最终采用了以下解决方案。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
//Constant for size of cup of coffee 
const int SM_OZ = 8;
const int MD_OZ = 12;
const int LG_OZ = 16;
//Constant for price of cup of coffee and Tax
const double SM_PRICE = 1.19;
const double MD_PRICE = 1.49;
const double LG_PRICE = 1.89;
const double TAX = .0825;
int main()
{
    //declare and initialize the variables for the individual cups of coffee
    int selection;
    int smCup = 0;
    int mdCup = 0;
    int lgCup = 0;
    //declare and initialize the variables for the total cups of coffee
    int smtCup = 0;
    int mdtCup = 0;
    int lgtCup = 0;
    do 
    {
        //get input from user as to what they want to do
        cout << "COFFEE SHOP" << endl;
        cout << "1. Sell Coffee" << endl;
        cout << "2. Total Number of Cups Sold" << endl;
        cout << "3. Total Amount of Coffee Sold" << endl;
        cout << "4. Total Amount of Money made" << endl;
        cout << "0. Exit" << endl;
        cout << "Type a number to continue: ";
        cin >> selection;
        cout << endl;

        //loop through the solutions based on the user's selection
        switch (selection)
        {
        case 1:
            //get the number of cups of coffee from the user
            cout << "How many small cups of coffee: ";
            cin >> smCup;
            cout << "How many medium cups of coffee: ";
            cin >> mdCup;
            cout << "How many large cups of coffee: ";
            cin >> lgCup;
            //get the total cups of coffee and store it as a variable
            smtCup += smCup;
            mdtCup += mdCup;
            lgtCup += lgCup;
            system("cls");
            cout << fixed << setprecision(2) << endl;
            //Sale Coffee Receipt Page
            cout << "COFFEE SHOP" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "Price" << setw(18) << "Total" << endl;
            cout << "Small: " << setw(18) << smCup << setw(18) << SM_PRICE << setw(18) << smCup*SM_PRICE << endl;
            cout << "Medium: " << setw(17) << mdCup << setw(18) << MD_PRICE << setw(18) << mdCup*MD_PRICE << endl;
            cout << "Large: " << setw(18) << lgCup << setw(18) << LG_PRICE << setw(18) << lgCup*LG_PRICE << endl;
            cout << "Subtotal: " << setw(51) << (smCup*SM_PRICE)+(mdCup*MD_PRICE)+(lgCup*LG_PRICE) << endl;
            cout << "Tax: (8.25%)" << setw(49) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX << endl;
            cout << "Total: " << setw(54) << ((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))+(((smCup*SM_PRICE) + (mdCup*MD_PRICE) + (lgCup*LG_PRICE))*TAX) << endl;
            cout << endl;
            cout << endl;
            break;
        case 2:
            //Total Number of Cups Sold
            cout << "REPORT - NUMBER OF COFFEE CUPS SOLD" << endl;
            cout << "SIZE" << setw(21) << "Number" << endl;
            cout << "Small: " << setw(18) << smtCup << endl;
            cout << "Medium: " << setw(17) << mdtCup << endl;
            cout << "Large: " << setw(18) << lgtCup << endl;
            cout << endl;
            cout << endl;
            break;
        case 3:
            //Total Amount of Coffee Sold
            cout << "REPORT - AMOUNT OF COFFEE SOLD" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "OZ" << endl;
            cout << "Small: " << setw(18) << smtCup << setw(18) << smtCup*SM_OZ << endl;
            cout << "Medium: " << setw(17) << mdtCup << setw(18) << mdtCup*MD_OZ << endl;
            cout << "Large: " << setw(18) << lgtCup << setw(18) << lgtCup*LG_OZ << endl;
            cout << "Total: " << setw(36) << (smtCup*SM_OZ) + (mdtCup*MD_OZ) + (lgtCup*LG_OZ) << endl;
            cout << endl;
            cout << endl;
            break;
        case 4:
            //Total Amount of Money made
            cout << "COFFEE SHOP - REPORT MONEY MADE" << endl;
            cout << "SIZE" << setw(21) << "Number" << setw(18) << "Price" << setw(18) << "Total" << endl;
            cout << "Small: " << setw(18) << smtCup << setw(18) << SM_PRICE << setw(18) << smtCup*SM_PRICE << endl;
            cout << "Medium: " << setw(17) << mdtCup << setw(18) << MD_PRICE << setw(18) << mdtCup*MD_PRICE << endl;
            cout << "Large: " << setw(18) << lgtCup << setw(18) << LG_PRICE << setw(18) << lgtCup*LG_PRICE << endl;
            cout << "Subtotal: " << setw(51) << (smtCup*SM_PRICE) + (mdtCup*MD_PRICE) + (lgtCup*LG_PRICE) << endl;
            cout << "Tax: (8.25%)" << setw(49) << ((smtCup*SM_PRICE) + (mdtCup*MD_PRICE) + (lgtCup*LG_PRICE))*TAX << endl;
            cout << "Total: " << setw(54) << ((smtCup*SM_PRICE) + (mdtCup*MD_PRICE) + (lgtCup*LG_PRICE)) + (((smtCup*SM_PRICE) + (mdtCup*MD_PRICE) + (lgtCup*LG_PRICE))*TAX) << endl;
            cout << endl;
            cout << endl;
            break;
        case 0:
            system("cls");
            break;
        default:
            //notify the user that an invalid selection has been inputted
            cout << "You have made an invalid selection. Please choose a number from the list." << endl;
            cout << endl;
        }
    //loop through if the user is still making a valid selection
    } while (selection != 0);
    system("pause");
    return 0;
}