#include <iostream>
class Rabbit{
enum Colour{BLACK,WHITE,BROWN,GRAY};
Rabbit();
Rabbit(int months, Colour fur);
int getAge() const;
friend bool operator!=(const Rabbit&, const Rabbit&);
friend const Rabbit operator+(const Rabbit& r1, const Rabbit& r2);
friend Rabbit* operator*(const Rabbit& r, int n);
private:
int age;
Colour colour;
};
Rabbit::Rabbit(){
age = 0;
colour = WHITE;
}
Rabbit::Rabbit(int months, Colour fur){
if(months < 0){
std::cout << "Error";
exit(1);
}
age = months;
colour = fur;
}
int Rabbit::getAge() const{
return age;
}
bool operator !=(const Rabbit& r1, const Rabbit& r2){
return((r1.colour != r2.colour) || (r1.age != r2.age));
}
const Rabbit operator+(const Rabbit& r1,const Rabbit& r2){
if(r1.colour == r2.colour)
return Rabbit(0,r1.colour);
else
return Rabbit(); //or return Rabbit(0,WHITE);
}
Rabbit* operator*(const Rabbit& r, int n){
Rabbit* A = new Rabbit[n];
for(int i = 0; i < n; i++){
A[i].age = r.age;
A[i].colour = r.colour;
}
return A;
}
int* everyOther(int* A, int& n){
if(n == 0)
return A; //or null or nullptr
if(n == 1){
delete[] A;
n = 0;
return NULL; //or nullptr
}
n = n/2;
int * B = new int[n];
for(int i = 0; i < n; i++){
B[i] = A[2*i];
}
delete[] A;
return B;
}
int main () {
return 0;
}