수다님께서 답변해 주셨는데... 이해가 안되서 재업해봅니다 ㅠㅠ
일진누나
#include stdio.h
#define M 5
int main(void)
{
int a[M] = {0};
int i,v,n,r; for(i=0; iM; i++)
{
printf(누구의 호감도를 올리시겠습니까?\n);
printf(1:아이 2:사기 3:규이 4:비이 5:가이\n);
scanf(%d, &n);
a[n-1]++;
}
v=a[0];
for(i=0; iM; i++)
{
if(v = a[i])
{
v = a[i];
r = i + 1;
}
} printf(%d,r);
return 0;
}
로 수정을 해주셨는데 아래for(i=0; iM; i++)
{
if(v = a[i])
{
v = a[i];
r = i + 1;
}
}에서 의문점이 생겼는데요제가 1 5 3 1 1 을 입력 했다고 치면 ㅇ이런 그림이 되는데 다음에 5를 친다면 1=5v=5r=2 가됩니다그리고 다음 3을 치면5=3 이 되고 뒤에 1두개도 무시되며 if문 자체가 실행이 안되야 하는데막상 프로그램을 실행하면 답은 1이라고 정확하게 나오구요제가 어느부분을 잘못 알고있는걸까요? ㅠㅠ아무리 생각해봐도 풀리지않아서 다시 올려봅니다...ㅠㅠ
-
도널드
엌ㅋㅋㅋㅋㅋㅋㅋ 여기서 뵈게 될줄은 몰랐는데 반가워요ㅋㅋㅋ
배열을 늘릴수 있다는 생각은 해본적이없었는데.. 배열과 그안에 값은 따로 컨트롤이되는군요...
덕분에 난제 잘해결했습니다!! 고마워요!ㅋㅋ -
트런들
반갑습니다 책벌레님 하하
먼저 잘못이해하고 계신게
입력한 값이 배열 a에 대입되는게 아니라
입력한 값에 해당하는 숫자에 위치한 배열의 값을 1씩 증감하는 방식입니다. (a[n-1]++;)
아래 수다님이 말씀하신거와 같이
1 5 3 1 1 를 입력했으면
a = {3, 0, 1, 0, 1}
5와 3을 추가로 입력했다고 해도
a = {3, 0, 2, 0, 2}
로 1이 가장 큰 값이 되므로 1이 출력됩니다.