2016-07-23 8 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

차량 유형을 입력 한 후 enter를 누르시겠습니까? –

답변

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 값을 테스트하기를 원한다면 당신과 같이 표준 출력에 인쇄해야한다고 생각 표준 입력에 무언가를 입력합니다.

1

코드에 몇 가지 오류가 있습니다. 그 중 하나가 "a"를 char로 선언해야하는 것 같지 않습니다. 코드 대신 std :: string이어야합니다.

먼저, 당신은 a를 선언해야합니다 당신은 또한 다음과 같은 코드가

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

당신은 당신의 코드에서 실수 무리가있다

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

들어가기 때문에 설명해주세요. "문자열"을 데이터 형식으로 사용하고 –

+0

을 인식하지 못합니다. http://mindshat.xyz/uploads/default/original/1X/04ab92b6dfe6d013c01e653a59ea30036acb4d14.JPG –

+0

@NicolasEcheverry 문자열로 선언해야합니다. 난이 오류가 내 대답 –

0

를 사용해야 잘못된 있음을 알아 두셔야 bstd:string이고 char이 아님.

두 번째 두 개의 변수를 비교하려면 ==을 사용해야하고 할당 연산자 인 =은 필요하지 않습니다.

셋째, 당신은 당신의 프로그램의 끝에서 cout << d;에 필요하지 cin >> d;

+0

를 참조 http://mindshat.xyz/uploads/default/original/1X/45f773074add8945c6f554279304a556aa87c345.JPG –

+0

이유 당신은'=='대신'=?'를 사용하고 있습니까 ?? 그리고 OP를 편집하고 전체 코드를 추가하십시오 : –

+0

@include add'#include '그리고 여전히 첫 번째''a = "automovil"&& b <= 1980 "'=='하나가 누락되었습니다. –