석차 다시 질문드립니다..
핫블랙
#include stdio.h
#include time.h
#include stdlib.h
int main(){
int arr[5][8];
int i, j;
int sum;
int min = 0;
int max = 0;
srand(time(NULL));
for (i = 0; i 5; i++)
{
for (j = 0; j 5; j++)
{
arr[i][j] = rand() % 100;
}
}// 5X5 출력
printf(1차\t2차\t3차\t4차\t5차\t총합\t평균\t순위\n);
for (i = 0; i 5; i++)
{
min = max = arr[i][0];
for (j = 0; j5; j++){
if (min arr[i][j]) min = arr[i][j];
if (max arr[i][j]) max = arr[i][j];
}
sum = 0;
for (j = 0; j 5; j++){
sum += arr[i][j];
arr[i][5] = sum - (min + max);
arr[i][6] = (sum - (min + max)) / 3;
}
arr[i][7] = 1;
for (j = 0; j 5; j++){
if (arr[i][5] arr[j][5])
{
arr[i][7]++;
}
}
for (j = 0; j 8; j++){
if (min == arr[i][j])
printf(min\t);
else if (max == arr[i][j])
printf(max\t);
else printf(%d\t, arr[i][j]);
}
printf(\n);
}
printf(\n\n);
for (i = 0; i 5; i++)
{
if (arr[i][7] == 1)
{
printf( 금메달 : %d번선수 \n, i + 1);
}
if (arr[i][7] == 2)
{
printf( 은메달 : %d번선수\n, i + 1);
}
if (arr[i][7] == 3)
{
printf( 동메달 : %d번선수\n, i + 1);
}
}
}
=================================================이렇게 코딩을하면 석차값이 1 2 2 1 2 이런식으로 이상한값이 나오는데... 왜그러는지 모르겠네요..
전에 값은 잘나왔었는데..
-
홀림길
감사합니다...
-
안녕나야
석차부분을 따로 놓고 하셔야져
반복문 하나에 전부다 넣으시면 안되요. -
진솔
그러면 총합부분은
\t\tsum = 0;
\t\tfor (j = 0; j 5; j++){
\t\t\tsum += arr[i][j];
\t\t}
\t\tarr[i][5] = sum - (min + max);
\t\tarr[i][6] = (sum - (min + max)) / 3;
이게 맞는거고 ( 버림연산제외 )
석차는...... 어떤부분이 잘못됬는지 이해가 안되네요...
저렇게하면 [i][5]부분이 계산되는데 저부분을 기준으로해서 석차를 구하는건데 -
나나
총합을 구할때 다 더하지도 않았는데 계산하시나요.
그리고 나누기 연산한걸 int 형에 담으면 당연히 버림으로 연산하겠죠.
석차 역시도 전체인원에 대한게 다 연산되지도 않았는데 석차를 구하면 당연히 이상하게 되지 않겠어요