liczby fibonacciego i czytanie wierszy

0

Hej. Robię teraz takie zadanie:
Nauczycielka postanowiła sprawdzić, czy uczniowie znają liczby Fibonacciego (zdefiniowanego począwszy od wyrazów 0 i 1). Kazała każdemu uczniowi napisać w jednym wierszu nie więcej niż 16 liczb Fibonacciego nie większych niż 1000. Następnie zapisała wszystkie wiersze jeden pod drugim do pliku. Poprosiła Ciebie, abyś napisał program, który wczyta po kolei każdy wiersz tego pliku, dla każdego wiersza danych wypisze w kolejnych wierszach na ekranie ilość liczb będących liczbami Fibonacciego oraz ilość wszystkich podanych w nim liczb, oddzielone znakiem ukośnika "/" (przed i po którym występuje znak odstępu). Dodatkowo, w ostatnim wierszu, wypisze wartość średnią liczby wszystkich podanych liczb, będących liczbami Fibonacciego oraz wartość średnią liczby wszystkich podanych przez uczniów liczb. Wartości średnie należy podać z dokładnością do dwóch miejsc po przecinku, natomiast wiersze nie zawierające żadnych danych - zignorować.

Przykład

Dane:

3 99 1
8
21 144 1 7

Wynik:

2 / 3
1 / 1
3 / 4
2.00 / 2.67

Uwaga!
Dane zadania, tak jak w poprzednich zadaniach należy odczytywać ze standardowego wejścia. Nie należy wykonywać operacji na plikach, natomiast trzeba zastosować sposób wczytywania danych wiersz po wierszu i odczytywania wartości do końca wiersza. Podczas testowania programu, wprowadzanie danych z klawiatury możemy zakończyć kombinacją klawiszy CTRL+D (lub CTRL+Z w przypadku systemów Windows).

Myślę, że może błąd jest dlatego, że najpierw powinienem wczytać wszystkie liczby wiersz po wierszu, a potem dopiero dla każdego wiersza wyświetlić te dane. Umiem to zrobić dla pliku, gdy tam mam dane zapisane, ale nie wiem jak to przerobić na wpisywanie danych z klawiatury.

Napisałem program, ale nie dostaję w systemie żadnego punktu i nie bardzo rozumiem dlaczego. Może ktoś rzuci okiem :)


#include <cstdlib>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <cstdio>

using namespace std;

int main(){
string wiersz;
double wszystkie_liczby = 0, wszystkie_fib = 0;
int L;
double ile_wierszy = 0;

while (getline(cin, wiersz)){						
    istringstream iss(wiersz);						
												
    int ile_liczb = 0;
	int ile_fib = 0;
    while (iss >> L){								
		++ile_liczb;
		if (L == 1 || L == 2 || L == 3 || L == 5 || L == 8 || L == 13 || L == 21 || L == 34 || L == 55 || L == 89 || L == 144 || L == 233 || L == 377 || L == 610 || L == 987){
			++ile_fib;
		}
	}
	if (ile_liczb != 0){								
		cout << ile_fib << " / " << ile_liczb << endl;
		ile_wierszy++;
	}
	wszystkie_liczby = wszystkie_liczby + ile_liczb;			
	wszystkie_fib = wszystkie_fib + ile_fib;					
}

printf("%.2lf / %.2lf", wszystkie_fib/ile_wierszy, wszystkie_liczby/ile_wierszy);

return 0;

}


0

OK już wiem nie dodałem zera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1