-2

我正在用 C++ 做一个税收计算器,但我有一个错误它应该输入几个数据:车辆类型、日期和型号。但是程序在暂停前只问了我一个,并没有继续。

假设操作如下:您输入一种车辆,然后输入发行日期,最后输入它的价格。

鉴于这些数据,该程序应该计算必须包含的税收百分比。

但正如我所说,程序在询问第二个数据(年份)之前暂停。

这是代码

#include <iomanip>
#include <iostream>

using namespace std;

int main(){

std:string a;//tipo
int b;//año
double c;//precio
char d;//resultado

cout << "Ingrese el tipo:";
cin >> a;

cout << "Ingrese el año:";
cin >> b;

cout << "Ingrese el precio:";
cin >> c;

if (a = "automovil" && b <= 1980){
   d = c*100/3.3;
   }else if ( a == "automovil" && b <= 1990){
         d = c*100/5.5;
   }else if ( a == "automovil" && b <= 2000){
         d = c*100/7;
   }else if ( a == "automovil" && b <= 2010){
         d = c*100/10;
   }else if ( a == "camioneta" && b <= 1980){
         d = c*100/3.3;
   }else if ( a == "camioneta" && b <= 1990){
         d = c*100/5.5;
   }else if ( a == "camioneta" && b <= 2000){
         d = c*100/7;
   }else if ( a == "camioneta" && b <= 2010){
         d = c*100/10;
   }else if ( a == "camion" && b <= 1980){
         d = c*100/3.3;
   }else if ( a == "camion" && b <= 1990){
         d = c*100/5.5;
   }else if ( a == "camion" && b <= 2000){
         d = c*100/7;
   }else if ( a == "camion" && b <= 2010){
         d = c*100/10;
   }else if ( a == "volqueta" && b <= 1980){
         d = c*100/3.3;
   }else if ( a == "volqueta" && b <= 1990){
         d = c*100/5.5;
   }else if ( a == "volqueta" && b <= 2000){
         d = c*100/7;
   }else if ( a == "volqueta" && b <= 2010){
         d = c*100/10;
   }

cout << d;

return 0;
}

有什么建议么?

4

3 回答 3

2

您的代码存在一些问题:要测试是否相等,请使用==运算符(而不是赋值=运算符)。

例如

if (a = "automovil" && b <= 1980)

...
else if ( a = "automovil" && b <= 1990){

应该

if (a == "automovil" && b <= 1980)

...
else if ( a == "automovil" && b <= 1990){

最后一行希望您向标准输入写入一些内容。正如评论中所说,我认为如果您真的想测试您的计算d值,您应该将其打印到标准输出,如下所示:

cout << d << endl;

因为当前正在发生的是d,一旦您在标准输入中键入内容,您就会覆盖您计算的值。

于 2016-07-23T17:32:29.257 回答
1

您的代码中有几个错误,首先,您似乎不太可能将“a”声明为 char,从您的代码看来,它应该是 std::string。您还应该注意以下代码是错误的

if (a = "automovil" && b <= 1980){

你应该使用

if (a == "automovil" && b <= 1980){
于 2016-07-23T17:34:36.813 回答
0

您的代码中有很多错误:

首先,您需要声明aand basstd:string和 not char

其次,您需要使用==比较两个变量而不是=哪个是赋值运算符。

第三,你需要cout << d;在你的程序结束时而不是cin >> d;

于 2016-07-23T17:47:32.933 回答