当计算所有价格C++时,总金额被搞砸了

total amount is messed up when calculated all the price C++

本文关键字:金额 计算所 C++      更新时间:2023-10-16

所以我尝试使用 C++ 制作一些东西,我制作的所有代码都能顺利运行而不会出错,但问题是,"付款"不正确,它只是从"付款"中学到很多,我尝试将其从"int"更改为 long 也不起作用双精度和浮动。 这是代码和输出。

#include<conio.h>
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
main()
{
  char brand[6][20]={"DA","da","TO","to","HO","ho"},car[6],*info[6];
  int  j,a,amount[6],tax[6],rent[6],total[6],final[6];
  long final_total[20];
  int price[15]={200000,300000,400000,500000,600000,250000,450000,550000,350000,375000,425000,555000};
cout<<"ttt***rental mobil sederhana***"<<endl;
cout<<"ttt**Jalan tebet raya no.15**"<<endl;
cout<<"ttt============================"<<endl;
cout<<" "<<endl;
cout<<"tinformasi merk dan mobil yang tersedia"<<endl;
cout<<"DAIHATSU [DA] : 1. Ayla    3. Luxio  "<<endl;
cout<<"                2. Sigra   4. Terios "<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"TOYOTA   [TO] : 1. Innova  3. Avanza "<<endl;
cout<<"                2. Yaris   4. Veloz  "<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"HONDA    [HO] : 1. Mobilio 3. Civic  "<<endl;
cout<<"              : 2. Jazz    4. Brio   "<<endl;
cout<<"amount :"; cin>>j;
amount[j]=0;
if(j<=0)
{
 cout<<"banyak mobil tidak bisa kosong";
}
else
{
 for(a=1;a<=j; a++)
 {
  cout<<"car number -"<<a<<endl;
  cout<<"enter the car brand :"; cin>>brand[a];
  cout<<"enter the car code  :" ; cin>>car[a];
  cout<<"how long            :"; cin>>rent[a];
if(brand[a]=="DA" || brand[a]=="da")
{
 if(car[a]==1)
 {
 info[a]= "Ayla";
 price[a]=200000;
 }
 else if(car[a]==2)
 {
 info[a]= "Sigra";
 price[a]=300000;
 }
 else if(car[a]==3)
 {
 info[a]= "Luxio";
 price[a]=400000;
 }
 else if(car[a]==4)
 {
 info[a]= "Terios";
 price[a]=500000;
 }
}
else if(brand[a]=="TO" || brand[a]=="to")
{
 if(car[a]==1)
 {
 info[a]= "Innova";
 price[a]=600000;
 }
 else if(car[a]==2)
 {
 info[a]= "Yaris";
 price[a]=250000;
 }
 else if(car[a]==3)
 {
 info[a]= "Avanza";
 price[a]=450000;
 }
 else if(car[a]==4)
 {
 info[a]= "Veloz";
 price[a]=550000;
 }
}
else if(brand[a]=="HO" || brand[a]=="ho")
{
 if(car[a]==1)
 {
 info[a]= "Mobilio";
 price[a]=350000;
 }
 else if(car[a]==2)
 {
 info[a]= "Jazz";
 price[a]=375000;
 }
 else if(car[a]==3)
 {
 info[a]= "Civic";
 price[a]=425000;
 }
 else if(car[a]==4)
 {
 info[a]= "Brio";
 price[a]=555000;
 }
}
total[a]=rent[a]*price[a];
final_total[j]=final_total[j]+total[a]*price[a];
if(final_total[j]<=0)
{
 tax[j]=0;
 final[j]=0;
 }
 else
 {
  tax[j]=final_total[j]*0.25;
  final[j]=final_total[j]+tax[j];
  }
 }
}
cout<<"tttRental mobil sederhana"<<endl;
cout<<"========================================="<<endl;
cout<<"no.| car  | car   | price | Total"<<endl;
cout<<"   | brand| name  |       | price "<<endl;
cout<<"========================================="<<endl;
for(a=1;a<=j; a++)
{
 cout<<" "<<a<<"|"<<brand[a]<<"  |";
 cout<<"      |"<<price[a]<<"  | Rp."<<total[a]<<endl;
}
cout<<"-------------------------------------------------"<<endl;
cout<<"payment       :Rp. "<<final_total[j]<<endl;
cout<<"tax 25%          :Rp. "<<tax[j]<<endl;
cout<<"total payment        :Rp. "<<final[j]<<endl;
getch();
}

这是输出

混乱的数字最终是"付款"。 我的税款和最终付款也会受到混乱数字的影响。谢谢!对不起,我的英语不好。

这里的问题很少。

  1. 数组从 0 开始:而不是从 1 开始。 价格已初始化为 20000、30000、40000 等。 价格[1]是30000:不是20000。 不知道为什么要初始化价格,因为您要覆盖下面 if 语句中的所有价格。
  2. final_total在使用之前需要初始化:因此数字混乱。这需要在你第一次喝酒之前完成。
  3. 总计[a] = 租金[a] * 价格[a] - 这是有道理的,但您从 1 开始。 如果打印出总计的所有元素,则第一个值为空,第二个元素具有计算的总计。 这是因为数组从 0 开始。
  4. final_total[j] = final_total[j] + 总计[a] * 价格[a] - 为什么要再次乘以价格?

了解如何使用调试器:它将为您节省大量时间。

塞莫加·贝哈西尔