C++ C++;计算公交车日利润(小错误?)
我正试图用C++解决一个特定的编程练习(我是新手)。这项工作要求计算公共汽车(公共交通)的每日利润,并打印利润最高的公共汽车的名称、每日利润的总和以及所有公共汽车的总利润。然而,根据乘客的不同,车票有不同的类型(1、2、3、4、5或6):1是满的,满的=3,2是老师=25.5,3是学生=22.10,4、5、6是免费的。 这是我的密码:C++ C++;计算公交车日利润(小错误?),c++,string,char,C++,String,Char,我正试图用C++解决一个特定的编程练习(我是新手)。这项工作要求计算公共汽车(公共交通)的每日利润,并打印利润最高的公共汽车的名称、每日利润的总和以及所有公共汽车的总利润。然而,根据乘客的不同,车票有不同的类型(1、2、3、4、5或6):1是满的,满的=3,2是老师=25.5,3是学生=22.10,4、5、6是免费的。 这是我的密码: #include <iostream> #include <string.h> #include <iomanip> usi
#include <iostream>
#include <string.h>
#include <iomanip>
using namespace std;
int main()
{
int n, j;
double full_ticket=0, teacher_ticket=0, std_ticket=0, foreign_ticket=0, polis_card=0, elderly_card=0; //declare tickets
char ticket, c;
string bus, hBus; //declare strings for bus names
double fuel_amount, fuel_price, daily_profit,busProfit, hAmount, total_amount;
cin>>n>>fuel_price;
for (j=1;j<=n;j++)
{
cin>>bus>>fuel_amount; //read string and amount of fuel consumed
do
{
cin>>ticket>>c; //read ticket type and c is comma, after each ticket there **needs** to be a comma
if(ticket=='1')
{
full_ticket=full_ticket+30;
total_amount=total_amount+full_ticket;
}
if(ticket=='2')
{
teacher_ticket=teacher_ticket+25.5;
total_amount=total_amount+teacher_ticket;
}
if(ticket=='3')
{
std_ticket=std_ticket+22.10;
total_amount=total_amount+std_ticket;
}
if(ticket=='4')
{
foreign_ticket=foreign_ticket+0;
total_amount=total_amount+foreign_ticket;
}
if(ticket=='5')
{
polis_card=polis_card+0;
total_amount=total_amount+polis_card;
}
if(ticket=='6')
{
elderly_card=elderly_card+0;
total_amount=total_amount+elderly_card;
}
}while(c!=';'); //termination of do-while loop when it reads a semicolon
//calculate sum per each bus
busProfit=(full_ticket+teacher_ticket+std_ticket+foreign_ticket+polis_card+elderly_card)-(fuel_amount*fuel_price);
daily_profit=daily_profit+busProfit; //calculate daily profit of buses
if(busProfit>hAmount) //set condition for highest bus
{
hAmount=busProfit;
hBus=bus;
}
full_ticket=0; teacher_ticket=0; std_ticket=0; foreign_ticket=0;polis_card=0;elderly_card=0;
//set variables to 0 before loop starts again
}
cout<<fixed<<setprecision(2);
cout<<hBus<<" "<<hAmount<<endl; //print highest bus and highest amount
cout<<daily_profit; //print daily profit
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
int n,j;
双倍全票=0,教师票=0,标准票=0,外宾票=0,城邦卡=0,老人卡=0;//检票
char-ticket,c;
string bus,hBus;//为总线名称声明字符串
双燃料金额、燃料价格、日利润、公共汽车利润、海蒙特、总燃料金额;
cin>>n>>燃油价格;
对于(j=1;j>总线>>燃油量;//读取字符串和消耗的燃油量
做
{
cin>>票证>>c;//读取票证类型,c为逗号,每个票证后面**需要**为逗号
如果(票证='1')
{
全票=全票+30;
总金额=总金额+全票;
}
如果(票证='2')
{
教师票=教师票+25.5;
总金额=总金额+教师票;
}
如果(票证='3')
{
标准票=标准票+22.10;
总金额=总金额+标准票;
}
如果(票证='4')
{
外国票=外国票+0;
总金额=总金额+国外机票;
}
如果(票证='5')
{
波利斯卡=波利斯卡+0;
总金额=总金额+波利斯卡;
}
如果(票证='6')
{
长者卡=长者卡+0;
总金额=总金额+长者卡;
}
}while(c!=“;”);//读取分号时do while循环的终止
//计算每辆公共汽车的总和
公交利润=(全票+教师票+标准票+外宾票+城邦卡+老人卡)-(燃油金额*燃油价格);
日利润=日利润+公交利润;//计算公交日利润
if(BUSPRITE>hAmount)//为最高总线设置条件
{
哈蒙特=利润;
hBus=总线;
}
全票=0;教师票=0;标准票=0;外国票=0;城市卡=0;老年卡=0;
//在循环再次开始之前,将变量设置为0
}
cout两个问题,尽管第二个问题可能不相关,因为我认为除了计算之外,total\u amount
没有任何用处:
每日利润
在使用前从未初始化
您的总金额的值将不正确,请执行以下操作:
if(ticket=='1')
{
full_ticket=full_ticket+30;
total_amount=total_amount+full_ticket;
}
在上面的代码中,您将一张全票的成本添加到我假设的销售全票的总收入中。然后,您将该值添加到总金额中。问题是,在计算每个tim售出的每张票的价值时,您确实只想在总金额中添加30e你增加的不是一张票的价值
第一张票:全票=30,总金额=30
第二张票:全票=60,总金额=90
第三张票:全票=90,总金额=180
这种模式在其他票价中重复出现。两个问题,尽管第二个问题可能不相关,因为我认为除了计算之外,总金额没有任何用处:
每日利润
在使用前从未初始化
您的总金额的值将不正确,请执行以下操作:
if(ticket=='1')
{
full_ticket=full_ticket+30;
total_amount=total_amount+full_ticket;
}
在上面的代码中,您将一张全票的成本添加到我假设的销售全票的总收入中。然后,您将该值添加到总金额中。问题是,在计算每个tim售出的每张票的价值时,您确实只想在总金额中添加30e你增加的不是一张票的价值
第一张票:全票=30,总金额=30
第二张票:全票=60,总金额=90
第三张票:全票=90,总金额=180
此模式在其他票价中重复。如果您能在代码中使用调试器,我们将不胜感激。每次执行一条语句并观察变量值。请编辑您的帖子,指出导致问题的语句以及原因。@ThomasMatthews是正确的,调试器将指出代码的某一行at导致问题。运行调试器并发布导致问题的行。开关
语句可能比多个if
语句更可读。顺便说一句,您可以删除添加0的语句。向值添加0不会改变值;它们对程序没有任何价值。此外,为什么您的代码如此复杂让它呼吸吧。如果您能在代码中使用调试器,我们将不胜感激。每次执行一条语句,并观察变量值。请编辑您的帖子,指出导致问题的语句以及原因。@ThomasMatthews是正确的,调试器将指出导致问题的代码的某一行。运行t调试器并发布导致问题的行。switch
语句可能比多个if
语句更可读。顺便说一句,您可以删除添加0的语句。Addin