繁体   English   中英

将数组传递给布尔函数

[英]Passing array to Boolean Function

我正在为一个课堂项目工作,我几乎完成了所有代码,而我只遇到了一个问题(代码在C ++中)。 我不太擅长使用布尔函数,特别是在此程序的情况下。 如果你们能帮助我为该代码编写或推动我朝着正确的方向发展,我将不胜感激。 该程序应该是由结构组成的Soda Machine程序。 我的问题是如何将数组传递给布尔函数,以检查是否有剩余饮料可供客户购买。 如果没有剩余的饮料,程序将打印出“对不起,我们已经售罄。请重新选择。” 如果仍然有饮料,则什么也不做,继续执行该程序。 它几乎可以验证剩余的饮料量。 我尝试编写该函数,但是不确定它是否正确,我将其发布给大家看看。 如果你们需要其他任何信息,请告诉我。 谢谢大家的帮助。

#include <iostream>
#include <string>
#include <cmath>
#include <iomanip>

using namespace std; 

struct Machine
{
   string name;

   double cost;

   int drinks;
};

int displayMenu(int choice);

double inputValidation(double);

bool drinksRemaining(); // this is the function that will check if there are any drinks of the choice left 

int displayMenu(int choice)
{

   cout << "SOFT DRINK MACHINE\n";

   cout << "------------------\n";

   cout << "1) Cola ($0.65)\n";

   cout << "2) Root Beer ($0.70)\n";

   cout << "3) Lemon-Lime ($0.75)\n";

   cout << "4) Grape Soda ($0.85)\n";

   cout << "5) Water ($0.90)\n";

   cout << "6) Quit Program\n";

   cout << endl;

   cout << "Please make a selection: ";

   cin >> choice;

   return choice; 

}

double inputValidation(double amount)
{

   while (amount < 0.00 || amount > 1.00)
   {
      cout << "Please enter an amount between $0.00 and $1.00.\n";

      cout << "It should also be equal to or greater than the drink price : \n";

      cin >> amount;
   }

   return amount;

}

bool drinksRemaining() // this is the function that I am having trouble with
{
   if (drinks <= 0)
   {
      cout << "Sorry we are out of this drink. Please choose another one.";

      cin >> drinkChoice;

      return true;
   }

   else
   {
      return false; 
   }
}


int main()
{
   const int DRINK_NUMS = 5;

   int selection = 0;

   double amountInserted = 0.00;

   double changeReturned = 0.00;

   double profit = 0.00;

   Machine drink[DRINK_NUMS] = { { "Cola", .65, 20 }, { "Root Beer", .70, 20 }, { "Lemon-Lime", .75, 20 }, { "Grape Soda", .85, 20 }, { "Water", .90, 20 } };

   do
   {
      profit += amountInserted - changeReturned;

      selection = displayMenu(selection);

      if (selection == 1)
      {
         cout << "Please enter the amount you want to insert:\n";

         cin >> amountInserted;

         inputValidation(amountInserted);

         changeReturned = amountInserted - drink[0].cost;

         cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

         drink[0].drinks--;

      }

      else if (selection == 2)
      {
         cout << "Please enter the amount you want to insert:\n";

         cin >> amountInserted;

         inputValidation(amountInserted);

         changeReturned = amountInserted - drink[1].cost;

         cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

         drink[1].drinks--;

      }

      else if (selection == 3)
      {
         cout << "Please enter the amount you want to insert.\n";

         cin >> amountInserted;

         changeReturned = amountInserted - drink[2].cost;

         cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

         drink[2].drinks--;


      }

      else if (selection == 4)
      {
         cout << "Please enter the amount you want to insert.\n";

         cin >> amountInserted;

         changeReturned = amountInserted - drink[3].cost;

         cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

         drink[3].drinks--;

      }

      else if (selection == 5)
      {
         cout << "Please enter the amount you want to insert.\n";

         cin >> amountInserted;

         changeReturned = amountInserted - drink[4].cost;

         cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

         drink[4].drinks--;

      }

      else if (selection == 6)
      {
         cout << endl;

         cout << "SOFT DRINK MACHINE REPORT\n";

         cout << "--------------------------\n";

         cout << "Total amount earned: $" << profit << endl;

         cout << endl;
      }

      else
      {
         cout << "Invalid selection. Please try again.";

         displayMenu(selection);
      }

   }while (selection != 6);

   system("PAUSE");

   return 0; 
}

该函数需要一个对象或对Machine类型对象的引用。

bool drinksRemaining(Machine const& m);

可以非常简单地实现:

bool drinksRemaining(Machine const& m)
{
   return (m.drinks > 0);
}

您可以将其用作:

  if (selection == 1)
  {
     if ( drinksRemaining(drink[0]) )
     {
        cout << "Please enter the amount you want to insert:\n";

        cin >> amountInserted;

        inputValidation(amountInserted);

        changeReturned = amountInserted - drink[0].cost;

        cout << setprecision(2) << fixed << "CHANGE : $" << changeReturned << endl;

        drink[0].drinks--;
     }
     else
     {
        cout << "Sorry we are out of this drink. Please choose another one.";
     }
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM