블로그 이미지
송시혁

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive


p3-16 예제

숫자를 입력하면 그숫자와 아래숫자를 더하는 프로그램.

예를 들어 3이라면, 1,2,3을 더한다.

#include <stdio.h>
int main()
{
  int count;
  long sum = 0;
  
  printf("Please enter an integer:");
  scanf("%d"&count);
  while (count >=0)
  {
    sum = sum + count;
    count = count - 1;
  }
  printf("The sum is %d.\n", sum);
  return 0;
}




음수를 입력하면, 실행되지 않는다. while문의 조건의 부합하지 못해서이다.





p3-17예제
1부터 4까지의 합 다음예제를 보고 비교해보자.
#include <stdio.h>
int main()
{
  int number =1;
  int sum = 0;
  
  while(number < 5)
  {
    sum = sum + number ++;
  }
  printf("0The sum of the first 5 integer is %d\n", sum);
  return 0;
}

결과 : 10이나온다. 1,2,3,4,5를 더하면 15가 나온다.(의심가면 계산기 사용!!!)
1부터 4까지 합인데 원래는 15가 나와야하는데 결과가 이상하다!!! 이것은 잘못된 예이다. 다음 소스를 보고
수정한 부분을 찾아내어 생각해보자.


#include <stdio.h>
int main()
{
  int number =1;
  int sum = 0;
  
  while(number <= 5)
  {
    sum = sum + number++;
    
  }
  printf("0The sum of the first 5 integer is %d\n", sum);
  return 0;
}


while의 조건식이 변했다. number <5에서 number<=5로 변했다. 단순히 생각하면된다. number <5일때는 변수 number가 5가 되었을 경우 실행되지 않아 while문밖 프린트문 sum은 그냥 4까지만 더한 10이 출력된다. 그래서 number <=5에 '='만 붙인다면 이것이 해결되어 비로소 15가 출력이된다. 이것을 이해하지 못하고 과정을 눈으로 확인하고 싶다면 다음과 같은 방법이 있다.

* sum = sum + number++;

number가 먼저 sum가 더해지고 sum갑에 대입된다. 그리고 나중에 프린트문에 들어가고 다시 한 번더 실행될때 값이 더해진다. 후치문이다.

이것을 알아보기 쉽게 수정하면 다음과 같다.

sum=sum+number;

number=number+1;

 (개쉑 진짜 욕나온다 ㅅㅂ ㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂㅅㅂ!!!!!!! 이따위로 짜다니 헷갈리게!!!!!!)



에러찾아내는법

1. 일일이 프린트문을 넣어서 변수값을 하나하나 확인한다.

2. 통합개발환경에 디버그(이것은 아직 안배움)

visual studio르 이용한 디버깅 방법이다. 나중에 다룬다.



다음은 에러를 일일이 하나하나 찾는 프로그램 소스. 변수값이 어디로 들어가고 출력이 되는지 알 수 있다.


p3-18예제.

1부터 5까지 합인데 원래는 15가 나와야하는데 결과가 이상하다!!! 그래서 다음프로그램을 실행해보고 각각의 변수를 보고 찾아내는 프로그램이다.


#include<stdio.h>
#include<conio.h> //getch()함수이용

int main()
{
  
  int number = 1;
  int sum = 0;
  
  while(number <5)
  {
    sum = sum+ number;
    printf("number : %d\tsum : %d\n", number, sum);
    number++;
    getch(); //아무키나 누르면 다음 반복이 실행된다.
  }
  printf("The sum of the first 5 integer is %d\n", sum);
}




getch()는 우리가 출력을 하기위해 키보드로부터 아무키나 입력할 때까지 기다리게 하는 역할이다!!

그래서 넘1, 썸1이 출력되고 , 다음 한번더 실행될때 2,3이 나오는 등의 과정을 프린트문으로 확인할 수 있다. 여기서 변수의 값을 확인 할 수 있으며, 4까지만 덧셈이 된다는 사실을 알 수 있다.

그래서 while의 조건변수를 수정해야된다고 인식할 수 있다. 이것이 프린트문을 이용한 첫 번째 방법이다. 


p3-19예제


#include <stdio.h>
int main()
{
  int count;
  long sum = 0;
  
  printf("Please enter an integer: ");
  scanf("%d"&count);
  while(count != 0)
  {
    sum = sum + count;
    
    if(count>=0)
    {

      
      count = count -1;
    
    }
    
    else
    {

      count = count +1;  
    }
  }
  printf("The sum is %d\n", sum);
  return 0;
}




원래예제에는 while문이 이렇게 되어있었다.
while(count != 0)
  {
    sum = sum + count;
    count = count -1;  
   }
이상태에서는 음수는 덧셈이 안되고  프로그램이 잠시 멈추다가 이상한 숫자가 나온다.

이부분을 if와 else를 만들어 음수도 덧셈이 가능하게 만든것이다. 더 간단하게

while (count != 0) {

 

sum += count--;

 

printf ("count : %d\tsum : %ld\n", count, sum);

getch ();       // <엔터 > while 문을 복시.

 

}



  


이거(ㅅㅂ ㅅㅂ ㅅㅂ 또 후치문 골치아픔.........ㅜㅜ)써도되지만, 





posted by 송시혁