ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 02. 제어와 배열
    C++ 2021. 1. 21. 11:26

    제어와 배열

    • 관계 연산자 -> 결과 bool
    < ex01_rel.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int arg, char const *argv[]){
        bool b;
         
        b = (1 == 2);
    
        cout << std::boolalpha;
        // 설정을 바꾸겠다
        // bool을 숫자 말고 true, false로 출력하도록 설정을 바꾸겠다
        cout << b << endl;
    
        return 0;
        
    }
    < ex02_rel.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]){
        bool b;
        int x = 3;
        int y = 3;
        cout << std::boolalpha;
    
        b = (x == 3) && (y == 3);
        cout << b << endl;
    
        y = 2;
        b = (x == 3) && (y ==3);
        cout << b << endl;
    }
    < ex03_if.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]){
        int x = 100;
    
        if(x == 100){
            cout << "100입니다." << endl;
        }
    
    }
    • if - else
      • 괄호와 중괄호 꼭 기입

    < ex03_if_else.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
        int x, y;
    
        cout << "x : ";
        cin >> x;
        
        cout << "y : ";
        cin  >> y;
    
        if(x > y){
            cout << "x가 y보다 큽니다" << endl;
        } else {
            cout << "y가 x보다 크거나 같습니다" << endl;
        }
        
        return 0;
    }
    < ex06_multi-if.cpp >
     
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
    
    int x, y;
    
    cout << "x값을 입력하세요";
    cin >> x;
    
    cout << "y값을 입력하세요";
    cin >> y;
    
    if(x > y)
    cout << "x가 y보다 큽니다." << endl;
    else if (x < y)
    cout << "x가 y보다 작습니다." << endl;
    else
    cout << "x와 y가 같습니다." << endl;
    
    return 0;
    }
    • 파이썬과 다르게 else if이다

    < ex07_switch.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
    int number;
    cout << "숫자를 입력하세요:";
    cin >> number;
    
    switch(number) {
    case 0:
    cout <<"zero\n";
    break;
    
    case 1:
    cout <<"one\n";
    break;
    
    case 2:
    cout <<"two\n";
    break;
    
    default:
    cout <<"many\n";
    break;
    }
    
    return 0;
    }
    • switch문
      • if - else if를 여러개 쓴 효과
      • default(위의 경우가 다 아니라면 적용될 것)는 생략 가능하다
      • break문을 만날 때 스위치문을 벗어난다
      • 만약, break문이 없을 경우 계속 실행이 다음으로 넘어간다
      • 숫자만 가능하다, 정수만 가능하다

    < ex08_switch.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
    
    int number;
    cout << "숫자를 입력하세요:";
    cin >> number;
    
    switch(number) {
    case 0:
    cout <<"zero\n";
    
    case 1:
    cout <<"one\n";
    
    case 2:
    cout <<"two\n";
    
    default:
    cout <<"many\n";
    
    break;
    }
    
    return 0;
    }

     

    < ex09_while.cpp >
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
    
    int n = 10;
    
    while(n>0) {
    cout << n << " ";
    n--;
    }
    
    cout << "fire!" << endl;
    
    return 0;
    }
    < ex10_while.cpp >
     
    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) { int n; int i = 1; cout << "구구단 중에서 출력하고 싶은 단을 입력하세요: "; cin >> n; while( i<=9 ) { cout << n << " * " << i
    << " = " << n*i << endl;
    i++;
    }
    return 0;
    }

    < ex10_while.cpp >

    #include <iostream>
    using namespace std;
    
    int main(int argc, char const *argv[]) {
    string str;
    
    do {
    cout<<"문자열을 입력하세요:";
    getline(cin, str);
    
    // getline -> 사용자의 입력을 뒤의 변수에 넣어준다
    
    // cin과 차이점
    
    cout << "사용자의 입력: " << str << endl;
    } while(str != "종료");
    
    return 0;
    }
    • getline과 cin의 차이점

      • 입력 문자열에 공백이 있는 경우

      • getline은 공백이 있어도 변수에 저장이 된다, 엔터를 칠 때까지 데이터를 취하겠다는 뜻

      • 데이터 안에 엔터는 빼고 저장해준다

    • cin은 공백을 만나게 되면 데이터 하나로 간주한다

    < ex12_for.cpp >
     
    #include <iostream>
    using namespace std;
    
    int main() {
    
    int sum = 0;
    
    for(int i=0; i<=10; i++) {
    sum += i;
    }
    
    cout << "1부터 10까지 정수의 합 = " << sum << endl;
    
    return 0;
    }
    
    
    for 루프
      • for (초기식; 조건식; 증감식){}
    • c++에서 +연산자는 문자열+문자열만 지원한다

    • 문자열 + 숫자는 지원하지 않는다

    • continue

      • continue를 만나면 반복문으로 돌아가 다시 루프를 돈다

    < ex16_array.cpp >
    #include <iostream>
    using namespace std;
    
    int main() {
    const int STUDENTS = 10;
    int scores[STUDENTS];
    
    int sum = 0;
    
    int i, average;
    
    for(i=0; i<STUDENTS; i++) {
    cout << "학생들의 성적을 입력하시요: ";
    cin >> scores[i];
    }
    
    // 루프를 돌면서 배열값 초기화
    
    for(i=0; i<STUDENTS; i++) {
    sum += scores[i];
    }
    
    average = sum / STUDENTS;
    
    cout << "성적 평균= " << average << endl;
    
    return 0;
    }
    • 배열
    • 데이터타입 배열이름[배열크기];
      • 데이터타입이 동일한 데이터가 순차적으로 메모리에 저장되는 자료 구조
      • 각각의 요소들은 인덱스를 사용하여 독립적으로 접근 가능
      • 대용량의 데이터를 동일한 이름으로 쉽게 저장하고 처리 가능
      • 처음 선언할 때 배열의 크기를 알려줘야 하고, 변경 불가능
      • 처음 해야 할 일 -> 루프를 돌리면서 배열을 초기화하기
      • 배열의 개수 관리를 상수를 통해서 해주기(중요)
      • 배열의 개수를 지정하지 않을 경우 데이터 개수를 보고 요소의 개수 결정한다
      • 초기화되지 않은 요소는 0으로 자동 초기화된다
      • 배열 전체를 0으로 초기화하고 싶을 때
        • ex) int score[STUDENTS] = {
        • 0,
        • }

    < ex17_array_init.cpp >
    #include <iostream>
    using namespace std;
    
    int main() {
    const int STUDENTS = 5;
    int scores[STUDENTS] = {
    100, 200, 300, 400, 500
    };
    
    int sum = 0;
    
    int i, average;
    
    for(i=0; i<STUDENTS; i++) {
    sum += scores[i];
    }
    
    average = sum / STUDENTS;
    
    cout << "성적 평균= " << average << endl;
    
    return 0;
    }

     

    < ex18_advanced_for.cpp >

     

    #include <iostream>
    using namespace std;
    int main() {
    int list[] = {1, 2, 3, 4, 5, 6 ,7, 8, 9, 10};// 밑의 for문을 돌면서 i에 들어간다
    int sum = 0;
    for(int i : list) { // 중요
    
    // 값의 복사
    
    sum += i;
    }
    cout << sum << endl << endl;
    for(int& i : list) {
    
    // 값의 복사가 되지 않는다!!, 오버헤드가 줄어든다(시간상의 이점이 생긴다)
    
    // i가 리스트를 가리키는 게 달라진다
    
    // &는 참조형 변수를 뜻한다
    
    // c++의 변수(참조 변수, 일반 변수, 포인터 변수)
    
    // int &total = sum -> 데이터는 하나만 존재하나 저장공간을 가리키는 이름이 두 개(sum, total)이 되는 것, total을 위한 공간이 하나 더 생긴 것이 아니다 (참조 변수);
    
    // int total = sum; -> total이라는 변수를 하나 더 만든 것 sum을 위한 공간 원래 있고, total을 위한 공간이 새로 만들어짐 total의 공간에 sum에 있던 값이 복사가 되는 것
    
    cout << i << " ";
    }
    cout << endl;
    for(auto& i : list) { // 중요
    cout << i << " ";
    }
    return 0;
    }

    범위 기반 for문

    • for(변수 : 범위){}

    'C++' 카테고리의 다른 글

    04. 클래스와 객체  (0) 2021.01.27
    [열혈 C++] 02. C언어 기반의 C++ 2  (0) 2021.01.22
    [열혈 C++] 01. C언어 기반의 C++ 1  (0) 2021.01.22
    03. 제어구조와 배열2  (0) 2021.01.22
    01. C++ 기초사항  (0) 2021.01.21

    댓글

Designed by Tistory.