본문 바로가기

컴퓨터/알고스팟 알고리즘

알고스팟: CONVERT [C++]

문제 출처: algospot.com/judge/problem/read/CONVERT

 

algospot.com :: CONVERT

Conversions 문제 정보 문제 Conversion between the metric and English measurement systems is relatively simple. Often, it involves either multiplying or dividing by a constant. You must write a program that converts between the following units: Type M

algospot.com

1. 코드

#include <iostream>
#include <string>
using namespace std;

int main(void)
{
	int t;
	cin >> t;

	for(int pk = 1; pk <= t; pk++)
	{
		double n;
		string unit;
		cin >> n >> unit;

		if (unit == "kg")
		{
			n *= 2.2046;
			unit = "lb";
		}
		else if (unit == "l")
		{
			n *= 0.2642;
			unit = "g";
		}
		else if (unit == "lb")
		{
			n *= 0.4536;
			unit = "kg";
		}
		else if (unit == "g")
		{
			n *= 3.7854;
			unit = "l";
		}
		cout << fixed;			//소수점이하 수 출력
		cout.precision(4);		//4자리까지
		cout << pk << " " << n << " " << unit << endl;
	}
}

(실행)

2. 풀이

문제에서 제공된 단위들에 대한 관계표를 보고 그대로 적용시켜주면 된다. 우선 테스트 횟수를 입력 후 수와 단위를 입력해준다. 그런데 0이라는 결과가 나와도 소수점으로 나오니 double 형으로 수를 받아준다. 그리고 단위 관계표를 보고 해당하는 단위에 대한 변화된 수와 단위를 적용시켜준다.

cout << fixed;			//소수점이하 수 출력
cout.precision(4);		//4자리까지

그리고 위 코드 2개를 이용하여 0도 소수점이하의 수가 나오게 만들어준다. 그러면 끝이다.