1차원 배열에 대해서 첫수업이 끝나고 도전해보고자 하는 사람만 도전 하라고 던저준 과제
그것은 바로 "진수변환" 프로그램 만들기
5분정도 걸려서 만들었지만 제대로 실행은 되지만 오류가 발생 2로 나누다 더이상 나눌수 없을때 정지 해야하지만 정지 하지 않고 0값을 계속 찍어내어 배열에 더 이상 넣을 공간이 없을때 프로그램이 종료되고, 값을 출력해냈다.

break를 걸어주지 않아서 발생한 버그였다. 그 실수를 찾아내는데 10분 -_-ㅋ
그리고 오늘 라면먹고 땀을 식히다 문득 떠 오른 최적화 아이디어(뭔가 대단한 것을 떠올린건 아니지만)
배열의 순서를 뒤집어서 출력하기 위해서 반복횟수를 세어주던 카운터 k를 없에고, i값을 가저오면 몇번 반복 되었는지 알수 있으니 2번쩨 for문에서 i값은 i값을 대입해주면 되겠다. 싶어서 해보았더니 적중~!!
그날 우리반에서 이 과제를 수업시간 1시간동안에 푼 사람은 나밖에 없었다......

우월감과 실망감을 느꼈다. 기초공학시간에 진수변환에 대한 이론을 배웠고 시험도 치뤘고 할줄 아는 사람이 나 혼자만이 아닐텐데도 그것을 C화 해내지 못한다는 것이 실망스럽다.

나의 지적능력의 절대치가 높은 것이 아니라 상대치가 높은 것이다.
뱀의 머리가 된 하루였다.

//처음 과제가 주어진 자리에서 바로 만들어 본것
#include <stdio.h>

int main(void)

{

int n,note[100],i,k=0;

 

printf("10진수 → 2진수 변환프로그램\n10진수 입력? ");

scanf("%d",&n);

 

for(i=0;i<100;i++)

             {

 

                           if (n>1)

                           {

                                        note[i]=n%2;

                                        n/=2;

                           }

                           else

                           {

                                        note[i]=n;

                                        break;

                           }

                           k++;

             }

 

for (i=k;i>=0;i--)

printf("%d",note[i]);

 

return 0;

 

}

 

============================================================

//조금 더 최적화 해본 것

#include <stdio.h>

int main(void)

{

int n,note[100],i;

 

printf("10진수 → 2진수 변환프로그램\n10진수 입력? ");

scanf("%d",&n);

 

for(i=0;i<i+1;i++) // 무한반복시키기 위해서 조건으로 i i+1과 같아질때까지로

             {

 

                           if (n>1)

                           {

                                        note[i]=n%2;

                                        n/=2;

                           }

                           else

                           {

                                        note[i]=n;

                                        break;

                           }

                          

             }

 

for (i=i;i>=0;i--) //위의 for문에서 변화되어진 i의 값이 곧 반복횟수임으로 i=i이다.

printf("%d",note[i]);

 

return 0;

 

}


: