스터디/알고리즘

[알고리즘][C++] 각 행의 평균과 가장 가까운 값

y00&z1 2022. 8. 7. 19:52

반올림 어떻게 ?

48.78

+  0.5

=49.28 (정수형 변수에 담으면 알아서 소수점 탈락 됨) 

 

 

절대값 함수인 abs()  algorithm stl에 포함되어있다r고 한다 (추가로 <cmath> include 안해도 됨!)

 

#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

int main(){ 
	//freopen("input.txt", "rt", stdin);
	int n, i, j, avg, res, tmp, min; 
	
	int a[9][9];
	
	for(i=0; i<9; i++){
		for(j=0; j<9; j++){
			scanf("%d", &a[i][j]);
		}
	}
	
	for(i=0; i<9; i++){
		avg=0;
		min=2147000000;
        
		for(j=0; j<9; j++){
			avg+=a[i][j];
		}
		avg = (avg/9.0) + 0.5; //소수점 계산을 위해서 실수로 나누어야 한다! 
		
		for(j=0; j<9; j++){
			tmp = abs(a[i][j]-avg);
			//printf("%d!\t", tmp);
			
			if ( tmp < min ) {
				min=tmp;
				res=a[i][j];
			}
			else if ( tmp == min) {
				if (a[i][j] > res) res=a[i][j];
			}
			
		}
		printf("%d %d\n", avg, res);
	}
	return 0;
}