Czytaj dokładnie treść zadań: "Na wejście programu podana zostanie pewna nieokreślona, ale niewielka ilość małych liczb całkowitych". Na wejściu nie jest podana ilość liczb, więc musisz zastosować sposób, który wczytuje wszystko z pliku aż do jego końca, czyli do wskaźnika EOF. Można to zrobić na kilka sposobów:
1) Używając iostream:
while( cin >> tab[ile] )
{
ile++;
}
//ewentualnie skrócona wersja
while( cin >> tab[ile++] );
2) używając cstdio:
//sposób 1
while( scanf( "%d", &tab[ile] ) != EOF )
{
ile++;
}
//krótsza wersja
while( scanf( "%d", &tab[ile++] ) );
//sposób 2
while( ~scanf( "%d", &tab[ile] ) )
{
ile++;
}
//krótsza wersja
while( ~scanf( "%d", &tab[ile++] ) );
Rozdzieliłem na krótsze i dłuższe wersje, bo nie wiem czy zrozumiesz jak działa inkrementacja w takim przypadku, ale polecam się tego nauczyć, bo często ułatwia to życie. Oczywiście używając takiego wczytywania danych, nie musisz dzielić kodu na 2 części tj. wczytanie liczb i obliczanie kolejnych sum, ale możesz to wszystko zrobić wszystko w jednej pętli (tej w której wczytujesz), ale jak to zrobić to już zostawię dla Ciebie jako ćwiczenie :)
Zapomniałem jeszcze o jednej bardzo ważnej rzeczy, a mianowicie o tym, że jeśli nie znasz ilości liczb na wejściu to nie możesz zainicjalizować wcześniej tablicy w sposób new int[ile]. Rozwiązaniem tego problemu jest wcześniejsze zainicjalizowanie tablicy z góry ustalonym rozmiarem, który na pewno zmieści wszystkie liczby czyli np. int tab[1000]. Ewentualnie w ogóle można zrobić to zadanie bez używania tablicy, ale tak jak wcześniej, zostawię to jako ćwiczenie :)