UE5 부트캠프(TIL)

[TIL] C++ 간단한 프로그래밍 구현

Yellow Kirin 2025. 6. 4. 21:14
#include <iostream>
using namespace std;

// 점수를 입력받아 배열에 저장하고 유효한 점수의 합계를 구하는 함수
double solution(int scores[], int scoresSize) {
    int sum = 0;
    int i = 0;

    // scoresSize만큼 유효한 점수를 입력받음
    while (i < scoresSize) {
        cout << "점수를 입력 하세요: ";
        cin >> scores[i];

        // 입력값이 0 이상 100 이하일 경우만 유효
        if (0 <= scores[i] && scores[i] <= 100) {
            sum += scores[i];
            cout << "현재 배열값: " << scores[i] << endl;
            i++; // 유효할 때만 다음 인덱스로
        } else {
            cout << "0미만 100초과의 값을 넣을 수 없습니다." << endl;
        }
    }
    return sum;
}

// 평균을 계산하는 함수
double solution2(int sum, int scoresSize) {
    return static_cast<double>(sum) / scoresSize;
}

int main() {
    int scores[5]; // 점수 배열
    int* p = scores; // 포인터로 전달
    int scoresSize = sizeof(scores) / sizeof(scores[0]); // 배열 크기 계산
    double sum = 0;

    // 디버깅용 포인터 확인 출력
    cout << "scores의 배열: " << scores << " *p 의 값: " << p << endl;

    // 점수 입력 및 총합 계산
    sum = solution(p, scoresSize);

    int temp = 0;

    // 평균 출력
    cout << "입력받은 점수 합계: " << sum << "점 평균: " << solution2(sum, scoresSize) << "점" << endl;

    // --- 오름차순 정렬 (Bubble Sort) ---
    for (int i = 0; i < scoresSize; i++) {
        for (int j = 0; j < (scoresSize - 1) - i; j++) {
            // 앞의 수가 뒤보다 크면 교환
            if (scores[j] > scores[j + 1]) {
                temp = scores[j];
                scores[j] = scores[j + 1];
                scores[j + 1] = temp;
            }
        }
    }

    cout << "오름차순:";
    for (int i = 0; i < scoresSize; i++) {
        cout << " " << scores[i];
    }
    cout << endl;

    // --- 내림차순 정렬 (Bubble Sort) ---
    for (int i = 0; i < scoresSize; i++) {
        for (int j = 0; j < (scoresSize - 1) - i; j++) {
            // 앞의 수가 뒤보다 작으면 교환
            if (scores[j] < scores[j + 1]) {
                temp = scores[j];
                scores[j] = scores[j + 1];
                scores[j + 1] = temp;
            }
        }
    }

    cout << "내림차순:";
    for (int i = 0; i < scoresSize; i++) {
        cout << " " << scores[i];
    }
    cout << endl;
}