C++/문제풀이

[C++] 배열과 포인터(*)를 이용하여 최대, 최소 구하기

year.number 2022. 5. 29. 21:57

 

[문제]

C++ 200제 044번

배열과 포인터(*)를 이용하여 최대, 최소 구하기

- *를 인자로 사용하는 함수를 이용하여 최대, 최소를 구해보자.

 


[기존 코드]

//
//  main.cpp
// 
//
//  Created by yeonsu on 2022/05/28.
//

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;

    int findMax(int x[], int n){
        int max;
        max = x[0];        // 배열의 첫 번째 원소가 최댓값이라고 가정

        for (int i = 0; i < n; i++) {
            if (x[i] > max)
                max = x[i];
        }
    
        return max;
    }

    int findMin(int y[], int n){
        int min;
        min = y[0];
        
        for(int i = 0; i<n; i++){
            if (y[i] < min)
                min = y[i];
        }
        return min;
    }

    int main(){
        
        int random[10];
        srand((unsigned int)time(NULL));    //난수 생성
        
        for(int i = 0; i<9; i++){
            random[i] = rand()%10;
            cout << random[i] << setw(5);
        }
        cout << endl << endl;
        
        int Max = findMax(random, 10);
        int Min = findMin(random, 10);
        
        cout << "최댓값은 " << Max << endl;
        cout << "최솟값은 " << Min << endl;
        
        return 0;
    }

[배열과 포인터]

//
//  main.cpp
// 
//
//  Created by yeonsu on 2022/05/28.
//

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;

    int findMax(int *x, int n){
        int max;
        max = *(x+0);        // 배열의 첫 번째 원소가 최댓값이라고 가정

        for (int i = 0; i < n; i++) {
            if (*(x+i) > max)
                max = *(x+i);
        }
    
        return max;
    }

    int findMin(int *y, int n){
        int min;
        min = *(y+0);
        
        for(int i = 0; i<n; i++){
            if (*(y+i) < min)
                min = *(y+i);
        }
        return min;
    }

    int main(){
        
        int random[10];
        srand((unsigned int)time(NULL));    //난수 생성
        
        for(int i = 0; i<9; i++){
            random[i] = rand()%10;
            cout << random[i] << setw(5);
        }
        cout << endl << endl;
        
        int Max = findMax(random, 10);
        int Min = findMin(random, 10);
        
        cout << "최댓값은 " << Max << endl;
        cout << "최솟값은 " << Min << endl;
        
        return 0;
    }

[실행결과]


Key Point

x[i] = *(x+i)

 

       for (int i = 0; i < n; i++) {
            if (x[i] > max)
                max = x[i];
        }
        for (int i = 0; i < n; i++) {
            if (*(x+i) > max)
                max = *(x+i);
        }