문제 


배열에 10개의 값을 입력 받았을 때 최대값, 최소값을 구하고 그 두개를 뺀 평균을 구하라


접근방법


배열을 입력하고 배열처음부터 순서대로 비교하면서 가장 큰값과 가장 작은 값을 구하면 된다.

그리고 10개를 비교하면서 모든 값을 한 변수에 더하고 위에서 구한 최대, 최소값을 각 각 뺀다음  8로 나누면 평균이 나온다.



구현



#include <iostream>

#include <string>

using namespace std;


int i;

int a[10];

int j = 0;

int maxx = 0;

int minn = 110;

int hap = 0;


int main(){

    while(j<10){

        cin >> a[j];

        j++;

    }

    for(i=0; i< 10 ; i++){

        if( a[i] > maxx ){

            maxx = a[i];

        }

        if( a[i] < minn){

            minn = a[i];

        }

        hap +=a[i];

    }

    hap = hap - maxx - minn;

    cout << hap / (i-1) << endl;

    cout << maxx;

    cout << minn;

    return 0;

}

'algorithm > [C++] 정보처리기사' 카테고리의 다른 글

약수 구하기  (0) 2018.06.15
최대공약수, 최소공배수 구하기  (0) 2018.06.15
소수 판별하기  (0) 2018.06.11

정의

우선 생각이 잘 안날 수도 있으니 약수의 개념부터 설명하겠습니다.

약수 - 어떤 수를 나누어 나머지가 없게 할 수 있는 수를 말한다.

ex) 10의 약수는 1,2,5,10 이다.


알고리즘 문제 분석


1부터 입력받은 수 까지 1씩 증가하면서 입력받은 수로 나눈다. 나누었을때 나머지가 0 이면 그 수가 약수인 것이다.



구현



#include <iostream>

#include <string>

using namespace std;


int main() {

    int a[100];

    int x, mok, nmg, i;

    cin >> x;

    

    int c = 0 , d = -1;

    

    while(1) {

        c++;

        if (c<=x){

            mok = x/c;

            nmg = x%c;

            if(nmg ==0) {

                d++;

                a[d] = c;

            }

        }

        else{

            cout << x << " \n";

            for(i = 0; i<=d; i++){

                cout << " " << a[i];

            }

            break;

        }

    }

    return 0;

}

'algorithm > [C++] 정보처리기사' 카테고리의 다른 글

최대값, 최소값, 평균 구하기  (0) 2018.06.18
최대공약수, 최소공배수 구하기  (0) 2018.06.15
소수 판별하기  (0) 2018.06.11

 정의

우선 생각이 잘 안날 수도 있으니 최대공약수와 최소공배수의 개념부터 설명하겠습니다.


최대공약수 - 공통으로 가지고 있는 약수 중 가장 큰수

최대공배수 - 두 수의 공통인 배수 중 가장 작은 수



알고리즘 문제 분석


최대공약수 구하기

두 수를 입력받고 둘중 큰 수를 작은 수로 나누었을때 나머지가 0이면 큰 수가 바로 최대공약수이다. 

만약 나머지가 0이 아니라면 작은수를 큰수라고 하고 나머지를 작은수라고 두어 나누었을때 0 이 나올때까지 반복해 최대공약수를 구하면 된다.


◎ 최소공배수 구하기

최소공배수는 두 수를 곱하고 최대공약수로 나누면 된다.



구현


#include <iostream>

#include <string>

using namespace std;


int main() {

    int a,b;

    int big, small, mok, nmg;

    int gcm, lcm;

    

    cin >> a >> b;

    if( a>=b) {

        big = a;

        small = b;

    }else{

        big = b;

        small = a;

    }

    while(1) {

        mok = big / small;

        nmg = big % small;

        if ( nmg == 0 ){

            gcm = small;

            lcm = a * b / gcm;

            cout << "gcm : "<<gcm <<" lcm: " << lcm;

            break;

        }

        big = small;

        small = nmg;

        

    }

    return 0;

}

'algorithm > [C++] 정보처리기사' 카테고리의 다른 글

최대값, 최소값, 평균 구하기  (0) 2018.06.18
약수 구하기  (0) 2018.06.15
소수 판별하기  (0) 2018.06.11

소수를 판별하는 방법은 다양하게 존재하고 있습니다. 여기서는 크게 3가지 방법으로 소수를 구하는 방법을 찾아보겠습니다.



i) 임의의 정수를 입력했을때 나누어 떨어지지 않는 경우


임의의수 X에 대해 X를 2부터 X-1로 순서대로 나누어 떨어지는지 검사하면 알 수 있다.

나누어 떨어지는 경우가 나타나면 소수가 아닌 것이다.




#include <iostream>

#include <string>

using namespace std;

int main() {


    int x,i,j;


    cin >> x;  // 판별하기 위한 숫자 입력

    i = x-1;

    j = 2;

    while (1) {

        if (j <= i) {

            if( x % j == 0){

                cout <<" 소수 아니다" << endl;

                break;

            }else {

                j +=1;

            }

        }else {

            cout << "소수이다" << endl;

            break;

        }

    }

    return 0;


}





ii) 임의의 정수를 입력했을때 나누어 떨어지는 경우


임의의수 X에 대해 X를 2부터 X-1로 순서대로 나누어 떨어지는지 검사하면 알 수 있다.

나누어서 처음으로 나누어 떨어졌을 때 X와 같은 값이면 소수이다. 



#include <iostream>

#include <string>

using namespace std;


int main() {

    int x, y;

    

    cin >> x;

    y = 2;

    while (x % y != 0) {

        y++ ;

        

    }

    if ( x == y)

    {

        cout << "소수이다\n";

    }else{

        cout << "소수가 아니다.\n";

    }

}




iii) 제곱근을 이용하기


임의의수 X에 대해 X를 2부터 X의 제곱근까지 숫자로 나누었을때 떨어지는지 검사한다.

한번도 나누어 떨어지지 않으면 소수이고, 한번이라도 나누어 떨어지는 경우가 나타나면 소수가 아니다.





#include <iostream>

#include <math.h>

using namespace std;


int main() {

    int x,y;

    cin >> x;

    y=2;

    while (1) {

        if ( y <= sqrt(x)){

            if( x % y ==0){

                cout << "소수가 아니다 \n";

                break;

            } else

                y++;

        } else{

            cout << " 소수이다. \n";

            break;

        }

    }

    return 0;

}





'algorithm > [C++] 정보처리기사' 카테고리의 다른 글

최대값, 최소값, 평균 구하기  (0) 2018.06.18
약수 구하기  (0) 2018.06.15
최대공약수, 최소공배수 구하기  (0) 2018.06.15

+ Recent posts