Jak napisać funkcje w C++ robiącą co innego, gdy w wierszu wpisano 2 liczby, a co innego, gdy wpisano 3 liczby? Chciałby, aby po wpisaniu na standardowe wejście np.
0.2 0.1
1.2 0.2
1 0 12.3
funkcja przeciążająca operator >> 2 pierwsze linijki zinterpretowała jako dodanie wierzchołków, a trzecią jako dodanie krawędzi.
Funkcja:
istream& operator>>(istream& i, Graph& rv)
{
double d;
do
{
double a, b, c;
i >> a >> b >> c;
if (c != 0 || c == 0)
{ puts("KRAWĘDŹ");
rv.AddEdge(static_cast<unsigned int>(a), static_cast<unsigned int>(b), c);
}
else
{puts("WIERZCHOŁEK");
rv.AddVertex(a, b);
}
d = a;
}
while (d != 0 || d == 0);
}
nie działa prawidło, po wpisaniu 2 cyfr, wciśnieciu ENTER i wpisaniu 2 kolejnych cyfr próbuje dodać krawędź (wyświetla "KRAWĘDŹ"). Jak zrobić, aby funkcja po wpisaniu w wierszu 2 cyfr wykonywała rv.AddVertex(a, b), a po wpisaniu trzech rv.AddEdge(static_cast<unsigned int="int">(a), static_cast<unsigned int="int">(b), c)? Jeśli można tego zrobić w funkcji przeciążenia operatora >>, proszę o podanie sposobu w jaki to się robi.