풀이 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 |