본문 바로가기
Algorithm/기본개념과 원리로 배우는C++

개념과 핵심원리로 배우는 C++ 프로그래밍 6장 프로그래밍 문제

by 준그래머 2023. 10. 31.
반응형

1. 배열 int arr[] = {1,6,9,7,3,2,0,4,8,5}를 가지고 다음 프로그램을 작성하시오.

(1) arr의 모든 원소의 합을 구하는 프로그램

(2) arr의 최솟값과 최댓값을 구하는 프로그램

(3) arr의 원소들을 역순으로 재구성하는 프로그램

(4) arr의 원소들을 오름파순으로 정렬하여 재구성하는 프로그램

#include <iostream>
using namespace std;
void funcprint(int arg[], int arrLen); 
void funcsum(int arg[], int arrLen);
void funcmaxmin(int arg[], int arrLen);
void inversesort(int arg[], int arrLen);
int main(void){
 
        int arr[] = {1,6,9,7,3,2,0,4,8,5};
        int arrLen = sizeof(arr) / sizeof(arr[0]);
        funcprint(arr, arrLen);
        funcsum(arr, arrLen);
        funcmaxmin(arr, arrLen);
        inversesort(arr,arrLen);
} 
void funcprint(int arg[], int arrLen){
        cout << "====기존의 배열====" << endl;
        for(int i = 0; i < arrLen; i++){
                cout << arg[i] << "  ";
        }
        cout << endl;
}
void funcsum(int arg[], int arrLen){           //int *arg로 받는다. 
        int sum = 0;
 
        for(int i = 0; i < arrLen; i++){
                sum += arg[i];
        }
        cout << "배열의 합은 : " << sum << endl;
}
void funcmaxmin(int arg[], int arrLen){
        int max = arg[0];
        int max_cnt = 1;
        int min_cnt = 1; 
        int min = arg[0];
        for(int i = 1; i < arrLen; i++){
                if(max < arg[i]){
                        max = arg[i];
                        max_cnt = i + 1;
                }
                if(min > arg[i]){
                        min = arg[i];
                        min_cnt = i+1;
                }
        }
        cout << "배열의 최대값 : " << max << "  위치는 : " << max_cnt << "번째에 위치"<< endl;
        cout << "배열의 최솟값 : " << min << "  위치는 : " << min_cnt << "번째에 위치"<< endl; 
}
void inversesort(int arg[], int arrLen){
        int tmp = 0;
        int cnt = 0;
        for(int i = 9; i >= (arrLen/2); i--){
                tmp = arg[cnt];
                arg[cnt] = arg[i];
                arg[i] = tmp;
                cnt++;
        }
        cout << "====역순으로 재배열한 배열====" << endl;
        for(int i = 0; i < arrLen; i++){
                cout << arg[i] << "  ";
        }
 cout << endl;
}

 

 

2. 다음은 네 학생의 국어, 영어, 수학 성적이다. 각 학생별 총점을 구하고, 각 과목별 평균을 출력하시오.

번호 국어 영어 수학
1 100 100 50
2 60 70 80
3 70 80 90
4 80 100 90
#include <iostream>
#include <iomanip> 
using namespace std;
int sumarr[4];
double avgarr[3]; 
void funcsum(int num[], int korarr[], int engarr[], int matharr[]);
void funcavg(int korarr[], int engarr[], int matharr[]);
int main(void){
 
        int numarr[4] = {1,2,3,4};
        int korarr[4] = {100,90,70,80};
        int engarr[4] = {100,70,80,100};
        int matharr[4] = {50,80,90,90};
 
        funcsum(numarr,korarr,engarr,matharr);
        funcavg(korarr,engarr,matharr);
} 
void funcsum(int num[], int korarr[], int engarr[], int matharr[]){
        for(int i = 0; i < 4; i++){
                sumarr[i] = korarr[i] + engarr[i] + matharr[i];
                cout << num[i] << "번의 총점: " << sumarr[i] << endl; 
        }
}
void funcavg(int korarr[], int engarr[], int matharr[]){
        cout << "=========평균=========" << endl; 
        cout << "국어" << setw(7) << "영어" << setw(7) << "수학" << endl; 
        for(int i = 0; i < 3; i++){
                for(int j = 0; j < 4; j++){
                        if(i==0)avgarr[i] += korarr[j];
                        if(i==1)avgarr[i] += engarr[j];
                        if(i==2)avgarr[i] += matharr[j];
                }
                cout << " " << avgarr[i]/4 << setw(4);
        }
}

설명은 생략하겠습니다~~