C++函数和循环

C++ functions and loops

本文关键字:循环 函数 C++      更新时间:2023-10-16

我必须编写一个模拟冰淇淋蛋筒供应商的程序。用户输入蛋筒的数量,对于每个蛋筒,用户输入勺数,然后输入每个勺子的口味(单个字符(。最后,列出总价。对于定价,1勺成本2.00,2勺成本3.00,2每勺成本.75

我在定价方面遇到问题。如果用户只需要一个圆锥体,则显示正确的价格。

/*
* icecream.cpp
*
*  Created on: Sep 14, 2014
*      Author:
*/
#include <iostream>
#include <string>
using namespace std;
void welcome() {
    cout << "Bob and Jackie's Ice Creamn";
    cout << "1 scoop - $1.50n";
    cout << "2 scoops - $2.50;n";
    cout << "Each scoop after 2 - $.50n";
    cout << "Ice Cream Flavors: Only one input character for each flavor.n";
}
bool checkscoops(int scoops) {
    int maxscoops = 5;
    if ((scoops > maxscoops) || (scoops < 1))
        return false;
    else
        return true;
}
bool checkcones(int cones) {
    int maxcones = 10;
    if ((cones > maxcones) || cones < 1)
        return false;
    else
        return true;
}
int price(int cones, int numberofscoops) {
    float cost = 0.00;
    {
        if (numberofscoops == 5) {
            cost = cost + 5 + (.75 * 3);
        }
        if (numberofscoops == 4) {
            cost = cost + 5 + (.75 * 2);
        }
        if (numberofscoops == 3) {
            cost = cost + 5.75;
        }
        if (numberofscoops == 2) {
            cost = cost + 5.00;
        }
        if (numberofscoops == 1) {
            cost = cost + 2.00;
        }
    }
    cout << "Total price is:  " << cost << endl;
}
int buildcone(int numcones) {
    char flav1, flav2, flav3, flav4, flav5;
    int numberofscoops;
    for (int i = 1; i <= numcones; i++) {
        cout << "Enter the amount of scoops you wish to purchase. (5 max): ";
        cin >> numberofscoops;
        checkscoops(numberofscoops);
        while (checkscoops(numberofscoops) == false) {
            cout << "You are not allowed to buy more than 5 scoops and you "
                    "cannot buy less than one scoop. Please try again.n";
            cout << "How many scoops would you like?(5 max): ";
            cin >> numberofscoops;
            checkcones(numberofscoops);
        }
        cout << "You are buying " << numberofscoops
             << " scoops of ice cream.n";
        if (numberofscoops == 5) {
            cout << "Enter flavor 1: ";
            cin >> flav1;
            cout << "Enter flavor 2: ";
            cin >> flav2;
            cout << "Enter flavor 3: ";
            cin >> flav3;
            cout << "Enter flavor 4: ";
            cin >> flav4;
            cout << "Enter flavor 5: ";
            cin >> flav5;
            cout << " ( " << flav1 << " )/" << endl;
            cout << " ( " << flav2 << " )" << endl;
            cout << " ( " << flav3 << " )" << endl;
            cout << " ( " << flav4 << " )" << endl;
            cout << " ( " << flav5 << " )" << endl;
            cout << "  \"
                 << " /" << endl << "   |" << endl;
        }
        if (numberofscoops == 4) {
            cout << "Enter flavor 1: ";
            cin >> flav1;
            cout << "Enter flavor 2: ";
            cin >> flav2;
            cout << "Enter flavor 3: ";
            cin >> flav3;
            cout << "Enter flavor 4: ";
            cin >> flav4;
            cout << " ( " << flav1 << " )" << endl;
            cout << " ( " << flav2 << " )" << endl;
            cout << " ( " << flav3 << " )" << endl;
            cout << " ( " << flav4 << " )" << endl;
            cout << "  \"
                 << " /" << endl << "   |" << endl;
        }
        if (numberofscoops == 3) {
            cout << "Enter flavor 1: ";
            cin >> flav1;
            cout << "Enter flavor 2: ";
            cin >> flav2;
            cout << "Enter flavor 3: ";
            cin >> flav3;
            cout << " ( " << flav1 << " )" << endl;
            cout << " ( " << flav2 << " )" << endl;
            cout << " ( " << flav3 << " )" << endl;
            cout << "  \"
                 << " /" << endl << "   |" << endl;
        }
        if (numberofscoops == 2) {
            cout << "Enter flavor 1: ";
            cin >> flav1;
            cout << "Enter flavor 2: ";
            cin >> flav2;
            cout << " ( " << flav1 << " )" << endl;
            cout << " ( " << flav2 << " )" << endl;
            cout << "  \"
                 << " /" << endl << "   |" << endl;
        }
        if (numberofscoops == 1) {
            cout << "Enter a flavor: ";
            cin >> flav1;
            cout << " ( " << flav1 << " )" << endl;
            cout << "  \"
                 << " /" << endl << "   |" << endl;
        }
    }
    price(numcones, numberofscoops);
}
int main() {
    int numberofcones;
    int numberofscoops;
    welcome();
    cout << "How many cones would you like?(10 max) ";
    cin >> numberofcones;
    checkcones(numberofcones);
    while (checkcones(numberofcones) == false) {
        cout << "You are not allowed to buy more than 10 cones and you cannot "
                "buy less than one cone.     Please try again.n";
        cout << "How many cones would you like?(10 max): ";
        cin >> numberofcones;
        checkcones(numberofcones);
    }
    cout << "You are buying " << numberofcones << " ice cream cones.n";
    buildcone(numberofcones);
}

首先将 price()返回值更改为 float,否则函数将无法返回适当的开销。此外,由于cones不用于计算购买成本,因此我们不将其作为parameter

float price(int numberofscoops) 
{
    float total_cost = 0.0f;
    if (numberofscoops == 1) {
        total_cost = 2.0f;
    }
    else if (numberofscoops == 2) {
        total_cost = 3.0f;
    }
    else if (numberofscoops > 2) {
        total_cost = 5.0f + ((numberofscoops-2) * 0.75f);
    }
    return total_cost;
}

您的代码可能会遇到其他问题,但我认为这些更改将允许您继续自行调试和修复代码。

你的 while(( 循环是有缺陷的。 注释您对 checkcones(( 的调用,如下所示。 你已经在 while(( 中调用 checkcones(( 作为条件,无需再次评估,因为这会将您发送到永久循环中。 我可以看到其中两个 while(( 语句,您需要注释掉这两个语句。

while ( checkcones( numberofcones ) == false )
{
    cout << "You are not allowed to buy more than 10 cones and you cannot buy less than one cone.     Please try again.n";
    cout << "How many cones would you like?(10 max): ";
    cin >> numberofcones;
//    THIS LINE IS THE PROBLEM  :)
//    checkcones(numberofcones);
}

修复后,您的程序开始工作,但定价失败。 你应该能够通过上面给出的答案弄清楚这一点。

我还想看看您是否可以弄清楚如何使用成员和方法实现 c++ 类,因为您当前的方法非常像"c"。 祝您编码愉快! :)