티스토리 뷰

#include<iostream>
#include <math.h>
using namespace std;

int main() {
	int h, b, c, s;
	cin >> h >> b >> c >> s;
	unsigned int mul = h * c * b * s;
	double fileSize = 0;
	fileSize = mul / (double)8 / pow((double)1024, 2.0);
	cout.precision(1);
	cout << fixed << fileSize << " MB" << endl;
}

 비쥬얼 스튜디오에서는 정상적으로 작동되는데 자꾸 올리기만 하면 잘못된 풀이 해서 값이 너무 크게 나왔다. 값도 하나하나 다 출력해서 확인하고, 값의 범위가 초과되서 이상한 값이 나오는건가 싶어서 범위도 제일 큰걸로 해봤다. 

 

결국 문제는 헤더였다. 원래는 cmath 를 사용했는데, 알고보니 pow 함수가 cmath 에서는 안된다는 거였다.

참나.....  앞으로는 헤더에 대해서도 많이 생각해봐야겠다.

그리고 소수점 나누기는 역시나 어렵다.. 양쪽 다 double 형태로 들어가 있어야한다. 

그래서 1024, 2 , 8 모든 상수값에 (double) 을 붙여서 형변환이 이루어지도록 했다. 

형변환과 헤더가 문제였음을 깨닫고, 데이터형 범위도 과하지 않게 알맞은 형태로 바꿨다. 

 

댓글