회원가입
로그인
Toggle navigation
문제
문제
전체 문제
문제 출처
단계별로 풀어보기
알고리즘 분류
추가된 문제
문제 순위
문제
푼 사람이 한 명인 문제
아무도 못 푼 문제
최근 제출된 문제
최근 풀린 문제
랜덤
출처
ICPC
Olympiad
한국정보올림피아드
한국정보올림피아드시․도지역본선
전국 대학생 프로그래밍 대회 동아리 연합
대학교 대회
카카오 코드 페스티벌
Coder's High
ICPC
Regionals
World Finals
Korea Regional
Africa and the Middle East Regionals
Europe Regionals
Latin America Regionals
North America Regionals
South Pacific Regionals
문제집
대회
1
채점 현황
랭킹
게시판
그룹
더 보기
재채점 기록
블로그
강의
실험실
도움말
BOJ Stack
BOJ Book
전체
공지
자유
질문
오타/오역/요청
게시판 공지
홍보
업데이트
solved.ac
글쓰기
질문 도움말
자주묻는 질문
고정된 SUM값
1546번 - 평균
tngusthd
2년 전
0
모든 입력에서 SUM의 값이 100으로 고정되서 계산되는데 이유가 뭔지 알수있을까여?
#include <stdio.h> int main(void) { int N, i; scanf("%d",&N); int array[N]={0,}; int max=0; float sum=0; for (i = 0; i < N; i++) { scanf("%d", &array[i]); if (array[i] > max) max = array[i]; } for (i = 0; i < N; i++) { array[i] = array[i]/max*100; sum += (float)array[i];//이 부분의 SUM값이 계속 100으로 고정됩니다ㅜㅜ } printf("%f\n", sum/N ); return 0; }
dldyddlwl
2년 전
0
아래에 있습니다!
#include <stdio.h> int main(void) { int N, i; scanf("%d",&N); int array[N]={0,}; // int형, 즉 정수형입니다! int max=0; float sum=0; for (i = 0; i < N; i++) { scanf("%d", &array[i]); if (array[i] > max) max = array[i]; } for (i = 0; i < N; i++) { array[i] = array[i]/max*100; // 자 생각해봅시다. max라는 값은 array에서 제일 큰 값이잖아요? // 그러면 max를 제외한 나머지 array의 값은 max로 나누면 // 전부 1보다 작겠죠? 근데 정수형끼리의 나눗셈은 소수점을 버리니까 // 값은 전부 0이 될테고, 오로지 max만 max/max = 1이 되어서, // 1 * 100 = 100으로 sum값이 고정되어버리는 것입니다! sum += (float)array[i]; // 그리고, 이미 array[i]의 계산 결과가 정수인데, 이를 float으로 바꾼다고 해서 } // 그 전의 계산이 float으로 바뀌지는 않습니다! // 예를 들어서, array[0] = 5이고, max = 7이라고 해봅시다. 그러면 5/7 = 0 (정수형이므로 소수점 버림) // 0 * 100 = 0이므로, sum += 0이 되어버립니다. 계산을 다 끝낸 후에 float으로 바꾸면 의미가 없습니다! // 힌트) 정수 간의 연산이 소수점을 버린다? => 한 쪽을 소수형 타입으로 바꿔준다! // 주의) 소수형 연산이 모두 이루어졌다고 해도, 이를 정수형 타입에 넣으면 의미가 없음! // EX) int a = 0.5; printf("%d",a); => 0 // 밑에는 예시 코드 // // // // // // // // // // // 개선안 float array[N]={0,}; // 정말 단순히 array 배열만 float으로 바꿔주면, 모든 문제가 해결됩니다! for (i = 0; i < N; i++) { scanf("%f", &array[i]); } array[i] = array[i]/max*100; // 소수형 / 정수형 계산이므로, 최종적으로 소수형으로 계산이 되고 // 이 값이 다시 소수형 타입에 저장되므로 안전!
댓글을 작성하려면
로그인
해야 합니다.
tngusthd 2년 전
모든 입력에서 SUM의 값이 100으로 고정되서 계산되는데 이유가 뭔지 알수있을까여?