C++ 计算巴士每日利润(小错误?
C++ Calculate bus daily profit (minor mistakes?)
我正在尝试在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>
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;
}
这段代码似乎通过了所有基本测试,但是它有问题,因为它没有被接受。如果您能帮助我找到错误,我将不胜感激。
两个问题,尽管第二个问题可能无关紧要,因为我认为除了计算之外没有使用total_amount
:
daily_profit
在使用前永远不会初始化。
您的total_amount
值将不正确,请执行以下操作:
if(ticket=='1')
{
full_ticket=full_ticket+30;
total_amount=total_amount+full_ticket;
}
在上面的代码中,您将full_ticket
的成本添加到我假设的出售完整门票所赚取的运行总收入中。然后,将该值添加到total_amount
中。问题是,您实际上只想在total_amount
中添加 30,因为您每次添加时都会计算每张售出的门票的价值,而不是一张票的价值。
首张票:full_ticket = 30, total_amount = 30
票第二张票:full_ticket = 60, total_amount = 90
第三张票:full_ticket = 90, total_amount = 180
对于其他票价,此模式重复出现。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- OpenCV - Python 断言错误:SAD 算法 - 立体相机视差图计算
- 如何在常量计算表达式中获取编译时错误?
- 计算阶乘的 C++17 倍表达式中的错误
- 为什么 2 个双精度值之间的差值计算错误?
- 我在c++中遇到了一个奇怪的错误,其中一个计算2个小整数加法的语句溢出到一个长值中
- 错误 C2064:术语的计算结果不是采用 3 个参数的函数
- 错误:一元"*"的类型参数无效(具有"int"):使用 mergesort 计算
- C++ openmp 并行计算计算错误的结果
- 为什么按位运算符在使用与整数中提供的位数相同的位数计算可能的最大范围时会产生错误
- 术语不计算为函数采用 1 个参数错误?
- Travis CI 中奇怪的编译器错误不会在本地计算机上发生
- 点云库:计算筛选关键点 - 输入云错误
- 在线程错误 C2064 中:term 的计算结果不为 0 个参数的函数
- GetAsyncKeyState(VK_RETURN) 错误地计算为 true
- 错误 C2064:term 的计算结果不是采用 1 个参数的函数 - 关于线程的一些东西
- log2 计算在 CPP 中给出了错误的结果
- 错误计算RSI或错误在MetaTrader 4
- c++程序错误计算