정수를 입력받아 배열에 정리하는 소스인데요
미즈
질문 제목 : 계속 이상한 값만 저장이돼네요질문 내용 :
//1)배열 10개 선언! 2) 10개 정수입력! 3) 홀수면 앞에서부터 짝수면 뒤에서부터 입력받는다.무작위로 숫자를 넣어서 정렬해주는것이다.
#include stdio.h
int main(void)
{
int con[10], num, a;
printf(정수는 하나씩 10개 입력 \n);
for(a=0;a4;++a)//a가 10보다 크거나 같으면 반복문종료
{
printf(정수 입력 : );
scanf(%d, &num);//정수를 입력받으면 num에 저장
if(num%2==0) //짝수면 뒤부터 안착
con[3-a] = num;
else//홀수면 처음부터 안착
con[a] = num;
}
a=0;
printf(%d \n, con[0]); 출력을하면 con[1], [3]번째의 값이 동일하게나옵니다. 물론-주소값으로말이죠; 어느부분에서 오류를 일으킨건지 문의드립니다.
printf(%d \n, con[1]);
printf(%d \n, con[2]);
printf(%d \n, con[3]);
/*while(a5)
{
printf(%d , con[a]);
a++;
}
printf(\n);*/
return 0;
}
-
퐁당
질문게시판에는 반드시 돋움체 또는 굴림체를 사용해야 됩니다.
이 폰트로 계속해서 덧글을 달면 탈퇴가 됩니다.
폰트는 자신의 블로그에서 설정할 수 있습니다. -
한추렴
음..... 일단 배열을 10개에서 4개로 줄였습니다. con[4]죠; 저장돼면 [0][1][2][3]에 저장돼는걸로 배웠습니다.
일단 처음에 홀수로 입력하면 a=0이기에 [0]에 저장돼고 짝수로 입력하면 [3-0]이기에 [3]에 저장됍니다.
다음수로 a+1로 a=1로 증가가 돼고 홀수면 [1]에 저장 // 짝수면 [3-1]이기에 [2]에 저장돼죠
오오 깨달음!!!!!!!
그러니까 저장돼는 곳에 상관없이 [3-a]에 휘둘려서 값이 저장돼고 그러기에 -
큰말
로직이 잘못되어 있네요.
처음에 홀수를 입력하면 con[0]에 들어가게 됩니다. a가 0일때 즉 처음에는 맞게 되어 있습니다.
그 다음에 a가 1일때 짝수를 입력하면 con[3]에 들어가야 되는데 a가 1이므로 con[3-a]니까 con[2]에 들어가게 되네요.