본문 바로가기

강의자료/C/C++

008. 코드의 반복을 위한 반복문 while/for

◈ 이 글은 강의를 위하여 제가 직접 작성한 내용입니다. 따라서 퍼가실 경우, 출처를 명확히 해주시기 바랍니다!!
◈ This ariticle was written by me for teaching. So if you want to copy this article, please clarify the source!!


# while()
#include  
using namespace std; 

void main( )
{
	// 1부터 10까지의 숫자를 화면에 출력.
	/*cout << 1 << endl;
	cout << 2 << endl;
	cout << 3 << endl;
	...
	cout << 10 << endl;*/

	int num = 1;

	while(num <= 10)
	{
		cout << num << endl;
		num += 1;
	}

	// 1부터 100까지의 숫자를 화면에 출력하되,
	// 한줄에 10개씩을 출력하세요.
	num = 1;
	while(num <= 100)
	{
		cout.width(2);
		cout << num << " ";
		if(num%10 == 0) cout << endl;
		num += 1;
	}

}
# 연습문제
#include  
#include 	// for _getch();

#define ARROW	224
#define LEFT	75
#define RIGHT	77
#define UP		72
#define DOWN	80

#define FUNC	0
#define FUN1	59
#define FUN2	60

#define ESC		27
#define SPACE	32
#define ENTER   13

using namespace std; 

void main( )
{
	cout << "키보드 입력";
	cout << "(LEFT, RIGHT, UP, DOWN, ENTER, SPACE, FUN1, FUN2)";
	cout << ", 종료는 ESC키" << endl;	

	int keys=0;
	while(keys != ESC)
	{
		keys=_getch();
		switch(keys)
		{
		// 화살표키.
		case ARROW:
			keys = _getch();
			switch(keys)
			{
			case LEFT:	cout << "왼      쪽 ←" << endl; break;
			case RIGHT: cout << "오  른  쪽 →" << endl; break; 
			case UP:	cout << "위      로 ↑" << endl; break;  
			case DOWN:	cout << "아  래  로 ↓" << endl; break;
			}
			break;
		// 펑션키.
		case FUNC:
			keys = _getch();
			switch(keys)
			{
			case FUN1: cout << "F1키" << endl; break;
			case FUN2: cout << "F2키" << endl; break;   
			}
			break;
		// 일반키.
		case ENTER: cout << "입      력" << endl; break;  
		case SPACE: cout << "여      백" << endl; break;
		// 다른 키는 무시.
		default: break;
		}  
	}
}
# for()
#include 
using namespace std;

void main()
{
	int i=1;
	for(;i<=10;)
	{
		cout << i << endl;
		i++;
	}

	for(int i=1;i<=10;i++)
	{
		cout << i << endl;
	}

	// 1부터 100까지의 숫자를 화면에 출력하되,
	// 한줄에 10개씩을 출력하세요.
	for(int num=1; num <= 100; num++)
	{
		cout.width(2);
		cout << num << " ";
		if(num%10 == 0) cout << endl;
	}
}
# 연습문제
/*
1부터 100까지 홀수의 합 = 2500
1부터 100까지 짝수의 합 = 2550
1부터 100까지 홀수의 합 = 2500
1부터 100까지 짝수의 합 = 2550
*/

#include 
using namespace std;

void main()
{
	int sumOdd = 0;
	int sumEven = 0;
	for(int i=1; i<=100; i++)
	{
		if(i%2 == 0) sumEven += i;
		else sumOdd += i;
	}

	cout << "1부터 100까지 홀수의 합 = " << sumOdd << endl;
	cout << "1부터 100까지 짝수의 합 = " << sumEven << endl;

	sumOdd = 0;
	sumEven = 0;

	int i=1;
	while(i<=100)
	{
		if(i%2 == 0) sumEven += i;
		else sumOdd += i;
		i++;
	}

	cout << "1부터 100까지 홀수의 합 = " << sumOdd << endl;
	cout << "1부터 100까지 짝수의 합 = " << sumEven << endl;
}
/*
15X15

*
**
***
****
*****
******
*******
********
*********
**********
***********
************
*************
**************
***************

// 조건문을 하나만 바꾸면 아래의 결과로 바꿀 수 있다.

***************
**************
*************
************
***********
**********
*********
********
*******
******
*****
****
***
**
*

*/

#include  
using namespace std; 
void main()
{
	/*
	i == 0, m < 1
	i == 1, m < 2
	i == 2, m < 3
		.
		.
		.
	i == 14, m < 15
	*/

	for (int i=0; i<15; i++) 
	{
		//for (int m=0; m < 15-i; m++) 
		for (int m=0; m < i+1; m++) 
		{
			cout << "*";
		}
		cout << endl;
	}
}
/*
차수를 입력하시오 : 15
***************
 **************
  *************
   ************
    ***********
     **********
      *********
       ********
        *******
         ******
          *****
           ****
            ***
             **
              *
*/

#include  
using namespace std; 

void main()
{
	int n;

	cout << "차수를 입력하시오 : ";
	cin >> n;

	/*
	row		space
	0		0
	1		1
	2		2
	.		.
	.		.
	.		.
	n-1		n-1
	*/

	for(int row=0; row < n; row++)
	{
		for(int col=0; col < n; col++)
		{
			// 첫째줄에서는 공백이 출력되지 않게 해야 한다.
			// col == row 조건이 있으면 0 == 0으로 참이 되어 공백이 출력되므로 제외.
			// 결국 >, < 조건만 사용해야 한다.
			// col > row 라면, col의 값은 지속적으로 증가하므로 col > 0 은 참이 되어 공백이 출력되므로 제외.
			// col < row 라면, col의 값은 지속적으로 증가하므로 col < 0 은 거짓이 되어 별이 출력된다.
			if(col < row)
				cout << " ";
			else
				cout << "*";

		}
		cout << endl;
	}
}