Przeciążenie operatora cin>>


(Ziomek Zemsty) #1

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? 

 


(Fizyda) #2

Tutaj jest wszystko opisane: https://pl.wikibooks.org/wiki/C%2B%2B/Przeci%C4%85%C5%BCanie_operator%C3%B3w


(Drobok) #3

Masz coś takiego jak sformatowany ciąg wejściowy scanf dajesz liczbę/znak/liczbę i masz 3 zmienne. Coś mi tu zadaniem śmierdzi :stuck_out_tongue: