Program zaliczeniowy II

Należy napisać program, który znajduje rozkłady zadanej liczby wymiernej na podaną liczbę ułamków o liczniku 1. Program powinien: Oto przykładowe działanie programu:
Podaj ułamek: 1
Podaj liczbę składników: 3
Znaleziono rozkłady:
1=1/2+1/3+1/6
1=1/2+1/4+1/4
1=1/3+1/3+1/3
Czy chcesz rozłożyć następną liczbę? (t/n): t
Podaj ułamek: 1/3
Podaj liczbę składników: 2
Znaleziono rozkłady:
1/3=1/4+1/12
1/3=1/6+1/6
Czy chcesz rozłożyć następną liczbę? (t/n): n

Dodatkowe wymaganie

Program powinien zawierać klasę, której obiekty reprezentują liczby wymierne (i korzystać z tej klasy). Ponadto korzystanie z tej klasy powinno być tak wygodne, jak to tylko możliwe - zalecam wykorzystanie operatorów przeciążonych oraz automatycznych konwersji.

Na co należy zwrócić uwagę:

  1. Nie zawsze zadanie jest rozwiązywalne - może się zdarzyć, że mianowniki pojawiające się w rozkładzie (lub liczby niezbędne do przeprowadzenia rachunków) są większe, niż zakresy typów całkowitych w C++. W takim przypadku program najlepiej, żeby program wypisał komunikat, że nie wszystkie rozwiązania zostały znalezione - należy unikać sytuacji, w której wypisywane są błedne rozwiązania (albo co gorsza program zawiesza się lub kończy z błędem).
  2. Szybkość działania programu nie jest decydującym czynnikiem, jednak należy zadbać o to, by program dla niezbyt skomplikowanych danych wykonywał się w rozsądnym czasie.
  3. W przypadku użycia częsci kodu, który nie został napisany samodzielnie należy to jawnie zadeklarować.

Kryteria oceny

  1. Poprawność działania. (2 pkt.)
  2. Użycie klas. (2 pkt.)
  3. Kod programu. (1 pkt.)
  4. Funkcje dodatkowe. (1 pkt.) - np. możliwość zapisywania wyników do pliku lub wczytywania z pliku zadań.
Rozwiązania należy nadsyłać na adres ziemians@mimuw.edu.pl w terminie, który zostanie ogłoszony później.
Powodzenia
Krzysztof Ziemiański