컴공생의 다이어리

[c++] 교통 카드 잔액 본문

Development/C & C++

[c++] 교통 카드 잔액

컴공 K 2021. 2. 10. 23:14

문제

교통 카드 잔액에 관한 프로그램을 작성하시오. 교통 카드의 초기 잔액은 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
반응형
Comments