다음 main 함수에 맞춰 Divisor 클래스와 이를 상속받는 클래스인 CommonDivisor를 작성하라.
Divisor 클래스의 멤버변수는 다음과 같다.
1. 정수 a
2. 약수의 개수
Divisor 클래스의 멤버함수는 다음과 같다.
1. 정수 a 입력
2. 약수의 개수 출력
CommonDivisor 클래스의 멤버변수는 다음과 같다.
1. 정수 b
CommonDivisor 클래스의 멤버함수는 다음과 같다.
1. 정수 a, b 입력
2. 공약수의 개수 출력
다음 main함수에 맞춰 클래스를 작성하라.
int main() {
Divisor *d1 = new Divisor();
Divisor *d2 = new CommonDivisor();
CommonDivisor *d3 = new CommonDivisor();
d1->input();
d1->printCount();
d2->input();
d2->printCount();
d3->input();
d3->printCount();
return 0;
}
Input & Output
입력은 0이 아닌 정수이다.
Divisor형 포인터가 CommonDivisor 객체를 가리킬 경우, 정수 100과 a의 공약수를 구한다.
Sample Input
10
6
20 16
Sample Output
Divisor: 4
CommonDivisor: 2
CommonDivisor: 3
-------------------------------------------------------------------------------------------
#include <iostream>using namespace std;
class Divisor {
protected:
int a, cnt=0;
public:
void input() {
cin >> a;
}
virtual void printCount() {
cout <<"Divisor: ";
for (int i = 1; i <= a; i++) {
if (a%i == 0) {
cnt++;
}
}
cout <<cnt<< endl;
}
};
class CommonDivisor:public Divisor {
protected:
int b=0;
public:
void input() {
cin >> a>>b;
}
virtual void printCount() {
cout <<"CommonDivisor: ";
if (b == 0) {
int cnt2=0;
for(int i=1; i<=100 && i<=a; i++){
if (100%i==0 && a %i ==0) {
cnt2++;
}
}
cout<<cnt2<<endl;
}
else {
int cnt2=0;
for (int i = 1; i <= a && i <= b; i++) {
if (a % i == 0 && b % i == 0) {
cnt2++;
}
}
cout <<cnt2;
}
}
};
int main() {
Divisor *d1 = new Divisor();
Divisor *d2 = new CommonDivisor();
CommonDivisor *d3 = new CommonDivisor();
d1->input();
d1->printCount();
d2->input();
d2->printCount();
d3->input();
d3->printCount();
return 0;
}
결과는 잘나오는데 제출하면 틀렸다고 나와서 그냥 잘려다가 글올려봅니다. 전 개좆밥입니다 으어어어
힌트만 알려주셔도 됩니다. 저같은 좆밥한테
ps만해서 저런 문법있는지 첨알았서
a b공약수 출력하는줄 줄바꿈 추가해야되는거 아님? 대충봤을때 말은 맞아서 줄바꿈말곤 짐작가는게 없는데
형.. ㅋㅋㅋㅋ 정답됐어 사랑해
와 객체지향 배웠을때 생각나네..