Mam problem tego typu:
Stworzyłem klasę LiczbaWymierna (ułamek zwykły) i przeciązyłem operator wyjscia (<<) tak żeby wyswieltal mi na ekranie liczbe w postaci "licznik/mianownik".
Teraz chciałbym zrobić tak, żeby wpisując np:
LiczbaWymierna x;
std::cin>>x;
a potem w konsoli "5/6"
mieć x.licznik=5 i x.mianownik=6
Próbowalem w ten (b.nieporadny sposob):
std::ostream&operator<<(std::ostream& wyjscie,LiczbaWymierna z)
{
wyjscie<<z.licznik_<<"/"<<z.mianownik_;
return wyjscie;
}
std::istream&operator>>(std::istream& wejscie,LiczbaWymierna &z)
{
std::string zobaczymy;
std::cin>>zobaczymy;
int i=0;
std::ostringstream napis1;
std::ostringstream napis2;
while(zobaczymy[i]!='/')
{
napis1<<zobaczymy[i];
i++;
}
std::string lancuch1=napis1.str();
lancuch1[i]=NULL;
i++;
std::string lancuch2;
for(i;i<zobaczymy.length();i++)
{
napis2<<zobaczymy[i];
}
lancuch2=napis2.str();
z.licznik_ = atoi(lancuch1.c_str());
z.mianownik_ = atoi(lancuch2.c_str());
wejscie>>zobaczymy;
return wejscie;
}
Wiem że gdzieś źle rozumuję, może dlatego że nie do końca ogarniam jak to wszystko dziala. Prosze o pomoc (może jakieś uwagi techniczne, sprostowanie?)
PS.Prosze o wyrozumialosc, to jest pierwszy moj post na tym forum.