Witam.
Próbuje przeciążyć operator cin>> w dość konkretny sposób. Chodzi o to, że użytkownik podaje w konsoli np: “3+i3” lub “3” lub “i3” lub i3-4", itd… Generalnie chodzi o to, że wczytywane są liczby zespolone. Zadaniem przeciążonego operatora miałoby być to, aby rozróżniał część rzeczywistą (ta bez “i”) i część zespoloną (z “i”) i odpowiednio je przypisywał do obiektów klasy według zasady:
class zespolona{
private:
int Real;
int Imag;
...}
////
int main()
{
zespolona w;
w.Real()=//wyłuskana część rzeczywista
w.Imag()=//wyłuskana część urojona
...
}
Oczywiście są już zrobione odpowiednie akcesory do ustawiania i zwracanai wartości pól prywatnych klasy.
Fajnie by było, gdyby dało się też jakoś rozpoznać znak (+/-). Póki co moim pomysłem jest wrzucenie tego do stringa, potem przeszukiwanie go pod kątem znaków: “i”, “+”, “-”. Czyli dla przykładu: użytkownik wprowadza 5-i6. W pierwsze kolejności szukam znaku “+” lub “-”. Następnie szukam “i”. Po zwróceniu jego pozycji odczytuję cyfry od miejsca za ilterą i do końca łańcucha. W tym przypadku wczyta 6. Ponieważ wcześniej odczytano “-”, przemnoży tę wartość przez -1. Z drugiej strony odczytane zostaną też cyfry przed wystąpieniem znaku “+” lub “-” i zapisane jako część rzeczywista.
Uważacie, że to dobry tok rozumowania, czy lepiej spróbować podejść do tego w inny sposób?