2016-07-23 78 views
-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; 
} 

有什麼建議?

+1

'CIN >> d;'你說'COUT << d;'? – DimChtz

+0

如果這是Nic的輸出,那麼爲什麼你輸入它而不輸出呢?你爲什麼認爲cout << d'不是解決方案? –

+0

插入車輛的類型後你是否按下輸入? –

回答

2

您的代碼的一些問題:使用==運算符(而不是賦值運算符=)測試相等性。

E.g.

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值你在標準輸入中輸入一些東西。

1

你的代碼中有幾個錯誤,最不可能的是,你應該從你的代碼中聲明「a」作爲char,它看起來應該是std :: string。你也應該注意,下面的代碼是錯誤的

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

你應該使用

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

請解釋,因爲我輸入「字符串」作爲數據類型,並不承認 –

+0

看起來這個錯誤:http://mindshat.xyz/uploads/default/original/1X/04ab92b6dfe6d013c01e653a59ea30036acb4d14.JPG –

+0

@NicolasEcheverry你需要將它們聲明爲字符串。見我的回答 –

0

。在你的代碼錯誤的一串:

首先,你需要聲明ab作爲std:string而不是char

第二個,您需要使用==來比較兩個變量,而不是=這是賦值運算符。

,你需要cout << d;在程序的結束,而不是cin >> d;

+0

我得到這個錯誤http://mindshat.xyz/uploads/default/original/1X/45f773074add8945c6f554279304a556aa87c345.JPG –

+0

爲什麼你正在使用'=?'而不是'=='?編輯你的OP,並添加整個代碼 –

+0

@include添加'#include ',你仍然缺少一個'==',這是第一個'(a =「automovil」&& b <= 1980)' –