for 루프 연습 – 문자열처리, for 중첩 | C++ 자습서 23

for 루프 연습

이번 포스팅에서는 for 루프의 여러가지 사용방법에 대해 연습을 해보겠습니다.

for 루프 문자열 처리

for 루프는 문자열을 처리하기에 적합한 특성을 가지고 있습니다. 아래의 예제는 string 객체를 사용해서 문자열을 꺼꾸로 출력하는 예제입니다.

우선 cin 으로 한 단어(공백 전까지)를 입력 받으면 문자열을 뒤집습니다. 뒤집는 원리는 인덱스에 있습니다. string 객체는 char 형 동적 배열 구조입니다. 각 문자에 대한 인덱스는 0부터 n-1 입니다. 인덱스 n-1 부터 0의 순서로 출력을 하면 문자가 역순으로 출력합니다.

string 객체의 size() 메소드로 인덱스 길이를 구할 수 있어서 편리합니다.

단 이 방법은 한글과 같은 유니코드에는 통하지 않습니다. 영문자는 1바이트인데 한글은 2바이트이기 때문입니다. 한글의 처리는 유니코드에 대해서 이해해야 하는데 이 포스팅은 초급자를 위한 for 문 연습이므로 그것까지 다루지 않습니다.

#include <iostream>

using namespace std;

const int SIZE = 20;

int main()
{
    string word;

    cout << "단어를 입력하시오." << endl;
    cin >> word;

    cout << "*- 입력받음 : " << word << endl;

    cout << "*- 역순정렬 : ";

    for (int i = word.size()-1; i >= 0; i--)
    {
        cout << word[i];
    }

    return 0;
}
단어를 입력하시오.
apple
*- 입력받음 : apple
*- 역순정렬 : elppa

char 가 1바이트 이기 때문에 인덱스를 1바이트 씩 옮겨서 조작할 수 있다는 점에 유의합니다.

for 루프 중첩

for 루프의 중첩은 for 문안에 또 for 문을 사용하는 것입니다. 이런 식으로 몇번이고 중첩시킬 수 있습니다.

쉬운예로는 구구단 출력이 있습니다. 구구단은 결국 보면 행과 열로 이루어져 있습니다. 루프를 중첩시키는 인덱스가 행과 열의 2차원 배열과도 닮아있습니다. 구구단은 2차원 배열이니까 for문 중첩으로 구현할 수 있습니다.

#include <iostream>

using namespace std;

int main()
{
	for (int i = 2; i <= 9; i++)
	{
		for (int j = 1; j <= 9; j++)
		{
			cout << i << "x" << j << "=";
			cout.width(2);
			cout << i * j << " ";
			if (j == 9) cout << endl;
		}

	}

	return 0;
}
2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18
3x1= 3 3x2= 6 3x3= 9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27
4x1= 4 4x2= 8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36
5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45
6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54
7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63
8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72
9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81

Range 스타일 for 루프

새로운 형태의 for 루프는 C11에서 추가되었습니다. 배열을 주면 배열의 끝까지 알아서 루프를 도는 방식입니다. 파이썬에서는 거의 range 방식으로 루프를 사용합니다. C++ 의 사용자들은 대체로 고전적인 for 문을 선호하긴 하지만 알아둬서 나쁠 것은 없습니다.

for (변수 타입과 선언 : 배열) 에서 배열에서 자동 형변환이 일어납니다. 물론 같은 타입으로 통일해주는 것이 좋습니다.

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main() {

	int myArray[5] = { 10, 20, 30, 40, 50 };

	for (int x : myArray)
		cout << x << endl;

	return 0;
}

[실행결과]

10
20
30
40
50

요약

for 루프 연습을 해봤습니다.

for문은 이 밖에도 무수하게 응용하는 방법이 있을 겁니다. 매일 사용하면서 익숙해지면 강력한 무기가 될 것입니다. 완전히 숙지하도록 합니다.

참고문서

for 문 (c + +) | Microsoft Docs

C++ | 반복문 | for 루프 (for loop) | * 로 그리는 도형 예제 (삼각형)

Leave a Comment