컴공생의 다이어리
[c++] 교통 카드 잔액 본문
문제
교통 카드 잔액에 관한 프로그램을 작성하시오. 교통 카드의 초기 잔액은 20000원이다. 운임은 고정 요금이 아닌 거리 규칙에 따라 측정 및 공제된다. 기본 요금은 40km에 720원, 추가 요금은 41km부터 8km당 80원이다. 프로그램은 각 이동 거리를 입력하여 카드의 최종 잔액을 출력한다. 최소 이동 거리는 4km, 최대 이동 거리는 178km이다. 입력 값이 위에서 언급 한 범위를 벗어나면 현재 잔액을 인쇄하고 프로그램을 종료한다. 더 이상 공제되지 않으면 이동할 수 없으므로 현재 잔액을 인쇄하고 프로그램을 종료하시오. 그리고 ‘-1’을 입력하면 프로그램을 종료하시오.
코드
#include <iostream>
using namespace std;
int main(){
int ib = 20000;//초기 잔액
int a, b, fare;//a=기본요금, b=추가요금, fare=기본요금+추가요금
a = 720; b = 80;
int dis = 0;//dis=이동 거리
cout << "초기 잔액: " << ib << endl;
while (1) {
cout << "이동 거리 입력 : ";
cin >> dis;
cout << "_______________________________________" << endl;
if (dis == -1)
break;
else if (dis < 4 || dis>178) {//최소거리와 최대거리 범위를 벗어나는 경우
cout << "현재 잔액 : " << ib << endl;
cout << "_______________________________________" << endl;
break;
}
else if (dis <= 40) //기본요금
fare = a;
else{ //기본요금+추가요금
if (dis <= 48)
fare = a + b;
else if ((dis - 40) % 8 == 0)
fare = a + ((dis - 40) / 8) * b;
else
fare = a + ((dis - 40) / 8 + 1) * b;
}
if (ib > 0) {
ib -= fare;
if (ib < 0) {
cout << "현재 잔액 : " << ib + fare << endl;
cout << "_______________________________________" << endl;
break;
}
cout << "요금 : " << fare << endl;
cout << "현재 잔액 : " << ib << endl;
}
}
cout << "프로그램 종료!" << endl;
return 0;
}
출력결과
728x90
반응형
'Development > C & C++' 카테고리의 다른 글
[c++] 2차 함수의 최대 값과 최소값 찾기 (0) | 2021.02.12 |
---|---|
[c++] 정보 추가, 삭제, 검색 및 정렬 프로그램 (0) | 2021.02.11 |
[c++] 문자(별표, 다이아몬드) 찍기 (0) | 2021.02.09 |
[c++] forward_list container(std::forward_list) (0) | 2021.01.30 |
[c++] std::vector의 reserve(), resize(), shrink_to_fit() 함수 (0) | 2021.01.17 |
Comments