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);
}