목적
  - 특정 구간간의 덧셈을 구한다.

문제

사용자 삽입 이미지
코드

#include <iostream>

using namespace std;

int main(void)
{
 int iA, iB, iTemp, iTotal;
 iA = iB = iTemp = iTotal = 0;

 cout << "정수 두개를 입력하세요 : ";
 cin >> iA >> iB;

 if(iA > iB)
 {
  iTemp = iA;
  iA = iB;
  iB = iTemp;

 }

 cout << iA << " 부터 " << iB << "까지의 합 : ";

 for(iTemp = iA; iTemp <= iB; iTemp++)
  iTotal += iTemp;

 cout << iTotal << endl;

 return 0;
}


해설
  - iSwap 문으로 큰수 작은수를 iA , iB로 나눈후 간단하게 for 문으로 덧셈을 구했습니다.

참고
  - 유사문제

Posted by 카켈



1. 목적
  - 특정 범위 사이에 계산을 반복하는 반복문을 이해한다.

2. 문제 (점수 : 15 점)
  - 키보드로 두 개의 정수를 입력받아 짝수/홀수의 개수와 합 그리고 전체의 합을 출력한다.
  - 시작 끝 범위가 반대로 입력 되어도 같은 결과가 나오게 하라.
  - for 문을 사용하되 do-while / while 문은 쓰지 않는다.
  - 출력 화면

두 정수를 입력하세요 : 890 123
123~890 사이의 짝수 개수 : 384, 합 : 194688
123~890 사이의 홀수 개수 : 384, 합 : 194304
123~890 까지의 총 합 : 388992
Press any key to continue

3. 이해
  - for 제어/반복문을 적당하게 쓸수 있는가?
  - 짝수와 홀수를 따로 계산할수 있는가?

4. 코드

#include <stdio.h>

int main()
{
 int from, to, i, total, even, odd, swap;
 long even_total, odd_total;
 from = to = i = total = even = odd = even_total = odd_total = 0;

 printf("두 정수를 입력하세요 : ");
 scanf("%d %d", &from, &to);

 if (from > to)
 {
  swap = from;
  from = to;
  to = swap;

 }

 for(i = from; i <= to; i++)
 {
  if(i % 2  == 0)
  {
   even++;
   even_total += i;
 
  }
  else
  {
   odd++;
   odd_total += i;

  }

 }

 printf("%d~%d 사이의 짝수 개수 : %d, 합 : %d\n", from, to, even, even_total);
 printf("%d~%d 사이의 홀수 개수 : %d, 합 : %d\n", from, to, odd, odd_total);
 printf("%d~%d 까지의 총 합 : %d\n", from, to, odd_total+even_total);

 return 0;
}

5. 해설
  - for 문은 시작 부터 일정 범위씩 증가하면서 범위내로 실행하는 구문입니다.
  - 짝수와 홀수 따로 변수를 만들어서 계산 합니다.

6. 참고
  - http://tc.pukyung.co.kr/CBasic/c-12.html : for 구문

Posted by 카켈



1. 목적
  - 다양한 반복/제어문에 대한 이해를 한다.

2. 문제 (점수 : 10 점)
  - 세가지 반복문(for/while/do-while) 을 써서 1부터 100까지 합을 계산하는 프로그램을 작성한다.
  - 출력 화면
1부터 100까지의 누적합 계산
for      문만을 이용한 결과 : 5050
while    문만을 이용한 결과 : 5050
do-while 문만을 이용한 결과 : 5050
Press any key to continue

3. 이해
  - 다양한 반복문을 이해하는가?

4. 코드
#include <stdio.h>

int main()
{
 int i, total;
 i = total = 0;

 puts("1부터 100까지의 누적합 계산");
 for(i = 1; i <= 100; i++) total += i;
 printf("for      문만을 이용한 결과 : %d", total);
 putchar('\n');

 total = 0;
 i = 1;

 while(i <= 100)
 {
  total += i;
  i++;

 }

 printf("while    문만을 이용한 결과 : %d", total);
 putchar('\n');

 total = 0;
 i = 1;

 do
 {
  total += i;
  i++;

 }while(i <= 100);

 printf("do-while 문만을 이용한 결과 : %d", total);
 putchar('\n');

 return 0;
}


5. 해설
  - 각각 선언하는 형식은 다르지만 작동 방식(메카니즘)은 동일합니다.

6. 참고
  - http://www.winapi.co.kr/clec/cpp1/4-3-2.htm : for/while/do-while 제어문 비교
  - 유사 문제
Posted by 카켈




1. 목적
  - 반복을 수행하는 for / do-while / while 문을 이해한다.

2. 문제
  - 123 부터 456 까지의 합을 구한다.
  - 증가 단계는 1이며 for / do-while / while 문으로 이용하여 값을 각각 구한다.
  - 출력화면

for      문만을 이용한 결과 : 96693
while    문만을 이용한 결과 : 96693
do-while 문만을 이용한 결과 : 96693
Press any key to continue

3. 이해
  - 제어문들의 차이를 이해 했는가?
  - 조건을 정확히 쓸줄 아는가?

4. 코드

#include <stdio.h>

int main()
{
 int for_t,dowhile_t,while_t,i,j;
 for_t = dowhile_t = while_t = i = j = 0;

 for(i = 123; i <= 456; i++) for_t += i;
 
 i = 123;

 while(i<=456)
 {
  while_t += i;
  i++;

 }

 i = 123;

 do
 {
  dowhile_t += i;
  i++;
 }

 while(i<= 456);
 
 printf("for      문만을 이용한 결과 : %d\n",for_t);
 printf("while    문만을 이용한 결과 : %d\n",while_t);
 printf("do-while 문만을 이용한 결과 : %d\n",dowhile_t);


 return 0;
}


5. 해설
  - 조건을 만족할때 까지 반복하는 것은 근본적으로 같습니다. 루프를 빠져 나갈때 덧셈을 하지 않지만 457 이라는 것을 주목할 필요가 있습니다.
  - 구현 방식은 다르지만 수행 알고리듬은 동일 합니다.

6. 참고 (www.winapi.co.kr 참고 링크)
  - for 반복문
    가.for문
    나.문자 움직이기
    다.무한 루프
    라.다중 루프
    마.for문 실습
  - while 반복문
    가.while
    나.제어문 비교
    다.반복문 실습

Posted by 카켈
이전페이지 1 다음페이지