U E D R , A S I H C RSS

최소정수의합/허아영

소 감



코 드

~cpp 
#include <stdio.h>

int main()
{
     int n, sum;
     n = 1;
     sum = 0;
     while(sum <=3000)
     {
               sum +=n;
               n++;
     }
     printf("n = %d, sum = %d", n, sum);
     system("PAUSE");	
     return 0;
}
n을 ++ 하고 출력해 버렸음. !! 그래서 1 큰 수가 출력되었다.
디버깅 할 때 못찾아낸 아영은 바보 ? ㅎㅎ
수정시
↓↓
~cpp 
#include <stdio.h>

int main()
{
     int n, sum;
     n = 0;
     sum = 0;
     while(sum <=3000)
     {         
               n++;
               sum +=n;
               
     }
     printf("n = %d, sum = %d", n, sum);
     system("PAUSE");	
     return 0;
}

나한테 할 말


소스에서
~cpp 
               sum +=n;
               n++;
이부분의 순서가 잘못되었습니다. 수행하면 n이 1이 크게나온답니다.
~cpp 
               n++;
               sum +=n;
로 정정해주세요. 그리고 n=1에서 n=0으로 바꾸어야 합니다. -조현태

- 실수했군요~ 고치겠음 ^^ -허아영



~cpp 
#include <stdio.h> 
 
int main() 
{ 
     double n, sum; 
     n = 0; 
     sum = 0; 

     while(sum <=18000000000000000000) 
     {          
               n++; 
               sum +=n; 
                
     } 
     printf("n = %f, sum = %f", n, sum);
	 system("PAUSE");
     return 0; 
} 
만약에 3000까지가 아닌 더 큰 수를 입력하고 프로그램을 돌려보시겠어요? 위의 코드에서 int 를 double 형으로 바꾸고 3000 대신 18000000000000000000 을 넣은 코드입니다. 한번 실행해 보세요. 더 나은 방법이 생각나실수도 있을것 같아요. 문제를 풀고 나서 어떤 점을 느끼셨나요? - 아무개

흠. 아직도 돌아가고 있어요 -.- 루프가 무섭네요. 큰 수에서도 빠르게 돌아가는 방법이 뭐가 있을까 생각해 봐야겠군요.. -허아영


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:17
Processing time 0.0176 sec