목적
  - while 반복문을 익힌다.

문제

사용자 삽입 이미지

코드

#include <iostream>

using namespace std;

int main(void)
{
 int i = 123;
 cout << "123와 45사이에 존재하는 9의 배수 : " << endl;
 
 while(i >= 45)
  if(--i % 9 == 0) cout << i << " ";

 return 0;
}

해설
- --i 단항연산자를 통해 1이 빼지고 나서 값을 비교하여 출력합니다. i-- 이면 비교후 1이 빠지므로 값이 맞더라도 1이 적게 출력 됩니다.
- 배수는 원하는 배수로 나누어 나머지가 0이 되는 경우를 말합니다.

참고
  - 유사 문제

Posted by 카켈






목적
  - 약수를 출력한다.

문제
사용자 삽입 이미지

코드

#include <iostream>

using namespace std;

int main(void)
{
 long lIn = 0;
 int i = 1;

 while(lIn < 101)
 {
  cout << "100보다 큰 정수를 입력하세요 : ";
  cin >> lIn;

 }

 while(i <= lIn)
 {
if(lIn % i == 0)
   cout << i << " ";

  i++;
 }

 cout << endl;

 return 0;
}



해설
  - lIn 이 100 이하면 다시 작동하는 알고리듬을 썼으며 약수는 나머지가 0인 부분만 활용했습니다.

참고
  - 유사 문제


Posted by 카켈



목적
  - 키보드로 원하는 값을 입력 받는다
  - 원하는 값을 화면에 출력한다
  - while 반복문을 익힌다
  - 나머지를 이해한다.

문제
사용자 삽입 이미지

풀이

#include <iostream>

using namespace std;

int main(void)
{
 int iIn, iCount,iDiv3, iDiv5;
 iIn = iDiv3 = iDiv5 = 0;
 iCount = 1; // Div 0 방지

 cout << "100 보다 큰 정수값을 입력하세요 : ";
 cin >> iIn;

 if(iIn < 100)
 {
  cout << "100 보다 작습니다" << endl;
  exit(-1); // 강제 종료

 }

 while(iCount <= iIn)
 {
  iDiv3 = iCount % 3 == 0 ? iDiv3 + 1 : iDiv3;
  iDiv5 = iCount % 5 == 0 ? iDiv5 + 1 : iDiv5;
  iCount++;
 }

 cout << "3으로 나누어 떨어지는 정수의 수 : " << iDiv3 << "개" << endl;
 cout << "5  로 나누어 떨어지는 정수의 수 : " << iDiv5 << "개" << endl;

 return 0;
}

해설
  - % 연산자는 나머지를 계산하는 연산자로써 5 % 3 = 2 입니다.
  - exit 함수는 프로그램을 강제 종료 하는 함수 입니다. 함수를 종료하는 return 과는 조금 차이가 있습니다.

참고
  - 유사 문제 : 나머지 관련 , http://cakel.tistory.com/search/나머지

Posted by 카켈




목적
  - while 반복문을 익힌다.

문제

사용자 삽입 이미지


코드 풀이

#include <iostream>

using namespace std;

int main()
{
 int i, iOut;
 long lTotal = 0;
 i = iOut = 0;

 cout << "정수 값을 입력하세요 : ";
 cin >> i;
 iOut = i;
 
 while(i > 0)
 {
  lTotal = i % 2 == 1 ? lTotal + i : lTotal;
  i--;

 }

 cout << "1 부터 " << iOut << "까지의 홀수 합은 " << lTotal << "입니다." << endl;

 return 0;
}

해설
  - C++ 는 C 보다 더 간소하면서도 더 강력한 기능을 제공합니다. 하위호환성(backward compatibility)도 최대한 지원합니다.
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. 목적

  - 조건문과 반복문을 익힌다.

2. 문제 (점수 : 20점)
  - 100부터 200 사이에 존재하는 4의 배수의 합을 출력한다.
  - 특정 조건문 제한 없음
  - 출력 화면

100 부터 200 사이의 4의 배수의 합 : 3900
Press any key to continue

3. 이해
  - 조건문을 이해하는가?
  - 특정 범위 사이내 구간을 활용할수 있는가?
  - 배수가 될수 있는 조건을 아는가?

4. 코드

#include <stdio.h>

int main(void)
{
 int i = 100;
 int total = 0;

 while(i<=200)
 {
  if (i % 4 == 0) total += i;
  i++;

 }

 printf("100 부터 200 사이의 4의 배수의 합 : %d\n",total);
 
 return 0;
}

5. 해설
  - 4의 나머지가 0 이 되었을때 4의 배수라는 조건을 걸고 반복문을 실행합니다.
  - 정수형 변수 i 가 100 ~ 200 까지 수행합니다.

6. 참고
  - 네이버 검색
  - 구글 검색
  - 내부 검색

Posted by 카켈



1. 목적
  - 반복문을 이해한다.

2. 문제
  - 1 부터 100 까지 더한 값(누적합)과 각각 거듭제곱을 한 값을 출력하라.
  - 반복문을 쓸때 while문을 써서 하라.
  - 출력 화면

1부터 100까지의 누적합은   5050 입니다.
1부터 100까지의 제곱합은 338350 입니다.
Press any key to continue

3. 이해
  - 반복문을 정확히 이해하고 쓸줄 아는가?

4. 코드

#include <stdio.h>

int main()
{
 int i = 1;
 long total = 0;

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

 }

 printf("1부터 100까지의 누적합은 %6d 입니다.\n", total);

 i = 1;
 total = 0;

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

 printf("1부터 100까지의 제곱합은 %d 입니다.\n", total);

 return 0;

}

5. 해설
  - while 문은 괄호 안의 조건이 맞을때 까지 반복하는 구문입니다.
  - total += i 은 total = totla + i 를 total += i * i 는 total = total + ( i * i ) 를 의미합니다.

6. 참고
  - http://www.winapi.co.kr/clec/cpp1/4-3-1.htm : 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 다음페이지