STUDY/Assignment

객체 지향 과제 rep 8-2

da1seun9 2020. 6. 9. 03:24

풀이 1 (지역변수 count 이용)

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

class Prime {

private:
    int number;
    static int count;
public:
    Prime(int no);
    void CheckPrime(int n);
    void PrintPrime(int Prime, int c);
    void PrintCount(int n,int k);
    static void ResetCount();

};

int Prime::count = 0;

Prime::Prime(int no)
{
    number = no;
    Prime::CheckPrime(number);

}

void Prime::CheckPrime(int n)
{
    int i, j, k = 0, flag = 0;
    for (i = 2; i <= n; i++) {

        for (j = 2; j < i; j++) {

            if (i % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            count += 1;
            k += 1;
            Prime::PrintPrime(i, count);
            if (count == 11) count = 1;
        }
        flag = 0;
    }
    Prime::PrintCount(n, k);
}
void Prime::PrintPrime(int prime, int c)
{
    if (c == 11) {
        cout << endl << setw(10) << prime;
    }
    else cout << setw(10) << prime;
}

void Prime::PrintCount(int n, int k)
{
    cout << endl << setw(104) << "---------------------------------------------------------------------------------------------------" << endl;
    cout << setw(65) << "2부터" << n << " 까지 소수의 갯수는 " << k << " 개 입니다.";

}
void Prime :: ResetCount()
{
}

void main() {

    int num;
    cout << ">> 소수 계산 범위 값< 2 - 99999, 종료시 0 > ?";
    while (1) {
        Prime::ResetCount();
        cin >> num;
        if (num == 0) break;
        cout << setw(65) << "소 수  계 산  결 과" << endl;
        cout << setw(65) << "===================" << endl;
        cout << setw(104) << "---------------------------------------------------------------------------------------------------" << endl;
        Prime x(num);
        cout << endl << ">> 소수 계산 범위 값< 2 - 99999, 종료시 0 > ?";
    }
}

풀이2 (class private 멤버 변수 count 이용)

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

class Prime {

private:
    int number;
    static int count;
public:
    Prime(int no);
    void CheckPrime(int n);
    void PrintPrime(int Prime, int k);
    void PrintCount(int n, int c);
    static void ResetCount();
};

int Prime::count = 0;
Prime::Prime(int no)
{
    number = no;
    Prime::CheckPrime(number);

}

void Prime::CheckPrime(int n)
{
    int i, j, k = 0, flag = 0;
    for (i = 2; i <= n; i++) {

        for (j = 2; j < i; j++) {

            if (i % j == 0) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            count += 1;
            k += 1;
            Prime::PrintPrime(i, k);
            if (k == 11) k = 1;
        }
        flag = 0;
    }
    Prime::PrintCount(n, count);
    count = 0;
}
void Prime::PrintPrime(int prime, int k)
{
    if (k == 11) {
        cout << endl << setw(10) << prime;
    }
    else cout << setw(10) << prime;
}

void Prime::PrintCount(int n, int c)
{
    cout << endl << setw(104) << "---------------------------------------------------------------------------------------------------" << endl;
    cout << setw(65) << "2부터" << n << " 까지 소수의 갯수는 " << count << " 개 입니다.";

}
void Prime::ResetCount()
{
}

void main() {

    int num;
    cout << ">> 소수 계산 범위 값< 2 - 99999, 종료시 0 > ?";
    while (1) {
        cin >> num;
        if (num == 0) break;
        cout << setw(65) << "소 수  계 산  결 과" << endl;
        cout << setw(65) << "===================" << endl;
        cout << setw(104) << "---------------------------------------------------------------------------------------------------" << endl;
        Prime x(num);
        cout << endl << ">> 소수 계산 범위 값< 2 - 99999, 종료시 0 > ?";
    }
}

근데 아직도 ResetCount를 왜 써야하는 지 모르겠다......

'STUDY > Assignment' 카테고리의 다른 글

자바 프로젝트(txt 암복호화 프로그램)  (1) 2021.12.16
객체 지향 과제 rep 8-1  (0) 2020.06.05
객체 지향 과제 rep7  (0) 2020.05.30
객체 지향 과제 rep6  (0) 2020.05.18
보안 자료 구조 과제  (0) 2020.05.04