모각코

[2024 하계 모각코] 2주차

cmnj00 2024. 7. 8. 13:02

[계획]

C++의 배열, 포인터, 문자열, 구조체, 함수, C++ 함수에 대한 이론과 실습을 통해 학습을 진행한다.


[학습 내용]

문자열 생성 방법

- <string> 헤더에 포함되어 있는 string 자료형을 이용하여 문자열을 입력받을 수 있다.

- 공백이 없는 문자열은 cin 함수를 통해,  공백이 있는 문자열은 getline(cin, string 변수)를 통해 입력받을 수 있다.

문자열 제거 방법

ㄴ substr을 이용하여 살려두는 문자열을 인덱싱하거나 erase를 이용하여 제거할 부분만 고를 수 있음

ㄴ예시) substr(1, 4) => 2 번째 문자부터 3 번째 문자까지만 살리겠다는 뜻 / 두 번째 인자가 없다면 문자열의 끝까지 반환한다.

문자열 연결하기

- 여러 문자열 변수를 연결할 때는 string 변수1 + string 변수2로 연결이 가능하며, (string 변수1).append(string 변수2)로도 연결이 가능하다.

구조체

- C언어와 동일하게 구조체를 선언할 수 있다.

- 구조체 멤버 함수 바깥 선언

: 함수는 선언과 동시에 정의가 가능하지만 프로토타입만 선언하고 구현 부분은 따로 작성하는 경우가 더 많다. 구조체 내부에 있는 멤버 함수도 구현 부분은 구조체 바깥에 둘 수 있으며, 이 경우 구현된 함수가 구조체의 멤버 함수라는 것을 나타내 주어야 함.

정의하는 방법: 멤버 함수의 반환형 ②구조체타입 ③:: ④멤버 함수의 함수명(매개 변수)

 

함수 및 포인터

- 변환형 함수이름(매개변수)로 함수를 정의할 수 있다.

ㄴ 예시) int sum(int a) {}

- 매개변수를 받는 방법으로 Call By Value, Call By Pointer, Call By Reference가 존재하며, 각각 값만 넘기는 방법, 포인터로 주소를 넘기는 방법, 참조자를 통해 특정 변수를 접근하는 방법이다.

- Call By Reference

: 참조형 변수는 참조자라고도 하며, 참조자를 통해 특정 변수를 접근할 수 있다.

- 사용 방법

: 자료형 &참조자 = 참조 대상;

ex)

int &ra = a;

ra = 30;

- 주의 사항

1. 참조형 변수를 선언할 때는 반드시 참조하려는 변수를 가리켜야 한다.

2. 참조자는 상수를 참조할 수 없다.

3. 참조자는 주소 값을 참조할 수 없다.

4. 참조자는 NULL 그리고 nullptr로 초기화하는 것이 불가능하다.

5. 한 번 참조했던 참조자는 이후에 다른 변수로 참조할 수 없다.

 

[실습 내용]

1. 2차원 배열

n x n 크기의 격자에 정수를 채워 넣는다. 1부터 시작해서 차례대로 까지 채워넣는데, 오른쪽 아래에서부터 위 아래 지그재그 방향으로 채워넣는 프로그램을 작성해 보아라.

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    int arr[n][n];
    int j = n - 1;
    int num = 1;
    for (int i = n - 1; i >= 0 ; i--) {
        if (j <= 0) {
            for(j = 0 ; j < n ; j++) {
                arr[j][i] = num++;
            }
        }
        else if (j >= n - 1) {
            for (j = n -1 ; j >= 0 ; j--) {
                arr[j][i] = num++;
            }
        }
    }

    for(int i = 0 ; i < n ; i++) {
        for (int j = 0 ; j < n ; j++) {
            cout << arr[i][j] << " ";
        }
        cout << endl;
    }
    
    return 0;
}

 

2. 구조체

void형 함수 Print를 Point구조체 바깥에 구현하여 x와 y의 값을 출력하라.

#include <iostream>
using namespace std;
struct Point {
    int x;
    int y;
	void Print();
};

int main()
{
	Point point = { 1, 2 };
	point.Print();
}

void Point :: Print() {
    cout << "x 좌표는 " << x << endl;
    cout << "y 좌표는 " << y <<endl;
}

 

3. 디폴트 매개 변수

int형 변수 a,b를 입력받아 a + b의 값을 int형으로 변환해 반환하는 함수sum을 작성하라.(b의 default값을 3으로 저장하라.)

#include <iostream>
using namespace std;
int sum (int a, int b = 3) {
    return a + b;

int main(void)
{
    int num = sum(2);
    cout << num << endl;
}

'모각코' 카테고리의 다른 글

[2024 동계 모각코] 1주차  (0) 2025.01.10
[2024 하계 모각코] 4주차  (0) 2024.07.24
[2024 하계 모각코] 3주차  (0) 2024.07.15
[2024 하계 모각코] 1주차  (0) 2024.07.01
2024년도 하계 모각코 참여 계획  (0) 2024.06.29