C_C++

(C/C++) 배열에서 정렬하기 않고 최대값, 두 번째로 큰 값 구하기

고니자니 2023. 12. 30. 13:12
반응형

1차원 배열에서 정렬을 사용하지 않고, 최대값과 2번째로 큰 값을 찾는 프로그램은 C언어와 C++ 언어로 작성했습니다.

1차원 배열은 10개의 요소를 갖는 크기이며, 랜덤하게 0~100까지의 수를 채우도록 했습니다.

 

C언어

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N   10

int main() {
    int n; // 배열의 크기
    int arr[N] = { 0 };

    // 난수 발생기를 시간에 따라 초기화
    srand(time(NULL));
    
    // 배열에 랜덤한 정수값 채우기
    for (int i = 0; i < N; i++) {
        arr[i] = rand() % 101; // 0~100사이의 랜덤한 정수값 생성
    }
    // 채워진 배열 출력
    for (int i = 0; i < N; i++) {
        printf("%d ", arr[i]);
    }

    int max = arr[0]; // 최대값
    int secondMax = arr[0]; // 두 번째로 큰 값

    // 최대값 찾기
    for (int i = 1; i < N; i++) {
        if (arr[i] > max) {
            secondMax = max; // 현재 최대값을 두 번째로 큰 값으로 설정
            max = arr[i]; // 현재 원소를 최대값으로 설정
        }
        else if (arr[i] > secondMax && arr[i] < max) {
            secondMax = arr[i]; // 현재 원소를 두 번째로 큰 값으로 설정
        }
    }

    printf("\n");
    printf("최대값: %d\n", max);
    printf("두 번째로 큰 값: %d\n", secondMax);

    return 0;
}

 

실행할 때마다 배열에는 다른 값으로 채워집니다.

(C/C++) 배열에서 최대값, 두 번째로 큰 값 구하기

 

이 프로그램은 최대값이 2개 이상이면, 그 다음으로 큰 값이 출력됩니다.

(C/C++) 배열에서 최대값, 두 번째로 큰 값 구하기

 

 

C++ 언어

#include <iostream>
#include <cstdlib>   // rand() 함수를 사용하기 위한 헤더
#include <ctime>     // time() 함수를 사용하기 위한 헤더

using namespace std;

int main() {
    const int arraySize = 10; // 배열 크기 (원하는 크기로 조절 가능)

    // 랜덤 시드 초기화
    srand(static_cast<unsigned int>(time(0)));

    // 1차원 배열 선언 및 랜덤 값으로 초기화
    int numbers[arraySize];
    for (int i = 0; i < arraySize; ++i) {
        numbers[i] = rand() % 101; // 0에서 100까지의 랜덤 정수값
    }

    // 배열 출력
    cout << "배열 값: ";
    for (int i = 0; i < arraySize; ++i) {
        cout << numbers[i] << " ";
    }
    cout << endl;

    // 최대값 및 2번째로 큰 값 찾기
    int maxVal = -1;
    int secondMaxVal = -1;

    for (int i = 0; i < arraySize; ++i) {
        if (numbers[i] > maxVal) {
            secondMaxVal = maxVal;
            maxVal = numbers[i];
        } else if (numbers[i] > secondMaxVal && numbers[i] < maxVal) {
            secondMaxVal = numbers[i];
        }
    }

    // 결과 출력
    cout << "최대값: " << maxVal << endl;
    cout << "2번째로 큰 값: " << secondMaxVal << endl;

    return 0;
}

(C/C++) 배열에서 최대값, 두 번째로 큰 값 구하기
(C/C++) 배열에서 최대값, 두 번째로 큰 값 구하기

728x90
반응형