Odpowiedź :
Odpowiedź:
#include <iostream>
class Ulamek{
public:
int L;
int M;
public:
Ulamek() {
L = 2;
M = 3;
}
Ulamek(int l, int m) : L(l), M(m) {
if(m == 0){
L = 1;
M = 2;
std::cout << "Liczba nie jest rzeczywista" << std::endl;
}
}
};
void print(const Ulamek &ulamek){
std::cout << ulamek.L << '/' << ulamek.M << std::endl;
}
int main(){
Ulamek ulamek1;
print(ulamek1);
Ulamek ulamek2(2,4);
print(ulamek2);
Ulamek ulamek3(2, 0);
print(ulamek3);
}
Wyjaśnienie:
Uwagi do tego zadania:
1. Zrobiłem pola publiczne, zamiast prywatnych, które dla klasy są domyślne (czyli de facto zrobiłem tak, żeby działała ta klasa jak struct), aby nie trzeba było pisać getterów i setterów, bo ułatwi nam pisanie tego programu (będzie krótszy). Jak chcesz, to możesz sam sobie je dopisać, nie jest to trudne.
2. Nie wiem co to znaczy, "jeśli liczba nie jest rzeczywista", dlatego założyłem, że taka liczba to taka, której mianowikiem jest zero.
3. W mainie zrobiłem przykładowe wyniki które coverują każdy przypadek: z konstruktorem domyślnym, z wartościami normalnymi i jeśli "ułamek nie będzie liczbą rzeczywistą".