ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 조건문과 반복문
    프로그래밍 언어/C++ 2024. 6. 21. 13:41
    조건문, 반복문

     

    조건문에 들어갈 수 있는 형식

    1. bool
    2. 비교연산
    3. 논리연산
    4. 함수호출
    5. 문자열 비교
    6. 포인터 검사
    7. 컴마(,)연산자
    8. 삼항연산자

    조건문

    • 조건문에 들어갈 수 있는 형식
    bool if (true) {} 
    비교연산 if ( a > b ) {}
    논리연산 if ( a ==1 && b ==2 ) {}
    함수호출 if (TEST()) {}  // bool TEST{ return true; } 
    문자열비교 if ("compare" == "fail" ) {} 
    포인터검사 if(ptr) { // ptr이 null이 아닐때 } // if (!ptr) {// ptr이 null 일때} 
    컴마(,)연산자 if ( (a= b+1), a>20 ) {} // b+1이 a에 대입되고, a가 20보다 크면 수행
    삼항연산자 if ( (a > b) ? true : false ) {}
    • if - else 구문
      • if  ( 조건문 )  { //TODO }  + else if ( 조건문 )  { // TODO }  + else { // TODO}
      • 조건에 해당하는 부분이 성공하면 TODO 진행 아니면, 뛰어넘음
    • switch 구문
      • switch 조건 : 정수 or enum (열거형 값)
      • case 별로 break를 하지 않으면 switch문을 탈출하지 못하고 다음 case를 진행하게 된다 (주의)
      • default: 의 경우 case에 처리되지 않으면 마지막에 처리하게 되는 부분 (else 부분과 유사하다)

     

    #include <iostream>
    #include <cstdlib>
    #include <ctime>
    #include <algorithm>
    
    using namespace std;
    
    enum
    {
        ROCK = 0,
        SISSORS,
        PAPER,
        END
    };
    
    
    int main()
    {
        srand(static_cast<unsigned int>(time(nullptr)));
        
    
      
        string input;
        cout << "(1)ROCK (2)SISSORS (3)PAPER" << endl;
        cout << "Enter Your Choice : ";
        cin >> input;
    
        // 소문자 변환
        transform(input.begin(), input.end(), input.begin(), ::tolower);
    
        int choice;
        if (input == "rock" || input == "1")
            choice = 1;
        else if (input == "sissors" || input == "2")
            choice = 2;
        else if (input == "paper" || input == "3")
            choice = 3;
        else
        {
            cout << "Invalid Choice, sorry program end!";
            return 1;
        }
         
        //상대방
        int random = rand() % 3;
    
        //switch ( 값 ) => 값 : 정수 혹은 enum 형식
        switch (random)
        {
        case ROCK:
            cout << "상대방 : ROCK" << endl;
            if (choice == 3)
            {
                cout << "이겼습니다." << endl;
            }
            else if (choice == 2)
            {
                cout << "졌습니다" << endl;
            }
            else
            {
                cout << "비겼습니다" << endl;
            }
            break;
        case SISSORS:
            cout << "상대방 : SISSORS" << endl;
            if (choice == 3)
            {
                cout << "졌습니다." << endl;
            }
            else if (choice == 2)
            {
                cout << "비겼습니다" << endl;
            }
            else
            {
                cout << "이겼습니다" << endl;
            }
            break;
        case PAPER:
            cout << "상대방 : PAPER" << endl;
            if (choice == 3)
            {
                cout << "비겼습니다." << endl;
            }
            else if (choice == 2)
            {
                cout << "이겼습니다" << endl;
            }
            else
            {
                cout << "졌습니다" << endl;
            }
            break;
        default:
            break;
        }
    
    
        cout << "가위 바위 보를 종료합니다 \n" << endl;
    
        return 0;
    
    }

     

     

    반복문

    • 반복문의 종류
      • for문 : 초기화, 조건 검사, 증감식을 포함하는 반복문
      • while문 : 조건이 true이면, 반복하는 반복문
      • do-while문 : 한번은 무조건 실행되고, 이후 조건에 따라 반복하는 반복문
      • 범위기만 for문 (C+11) : 모든 요소를 순회하는 반복문
    • 반복문의 형태
      • for문
        • for ( [초기화] ;  [조건식];  증감식 ) { // TODO}
        • for문의 경우 초기화, 조건식, 증감식을 모두 선택적으로 넣을 수 있다
        • ex) for ( ; ; ) {} , for (int a= 0; ; ) {} , for( int num =0; ; ++num) { }
      • while문
        • while (조건식) {}
        • while문의 경우 조건식이 필수로 필요함
        • ex) while (true) { // 무한 루프} , while (a>b) {}
      • do-while문
        • do { } while(조건식)
        • 최소 한번은 실행되는 특징을 가지고, 이후 작업은 while과 동일하다
      • 범위기반 for문
        • for (type element : container)  {}
        •  컨테이너에 가지고 있는 data값을 element로 하나씩 순회하여 사용
        • 자세한 사항은 아래 링크 참고
    int iter_test()
    {
    #define MAX_STAR_COUNT 7
    #define HEIGHT 4
    #define REVERSE  HEIGHT -2
    
        for (int j = 0; j < HEIGHT; ++j)
        {
            for (int i = MAX_STAR_COUNT; i > j; --i) // j 인덱스에 따라 값이 달라짐
            {
                cout << " "; // 7까지 밀어내기
            }
    
            for (int i = 0; i < 2*j +1; ++i)
            {
                cout << "*"; // " "이후 *찍기
            }
            cout << endl;
        }
    
    	// 위와 반대로
        for (int j = REVERSE; j >=0 ; --j)
        {
            for (int i = MAX_STAR_COUNT; i > j; --i)
            {
                cout << " ";
            }
    
                
            for (int i = 0; i < 2 * j + 1; ++i)
            {
                cout << "*";
            }
            cout << endl;
        }
        
        
    
    
        return 0;
    }
    
    /*
    result
    
           *
          ***
         *****
        *******
         *****
          ***
           *
    
    
    
    */

    '프로그래밍 언어 > C++' 카테고리의 다른 글

    enum  (0) 2024.06.21
    Define( + inline , constexpr)  (0) 2024.06.21
    자동 캐스팅, 변수 유효범위, 타입 변환  (0) 2024.06.21
    메모리 구조 및 const  (0) 2024.06.21
    비트연산  (0) 2024.06.21
Designed by Tistory.