Jeśli chcesz aby Twój kod działał jednakowo w różnych kompilatorach, musisz trzymać się specyfikacji języka, inaczej możesz trafiać na tego typu niespodzianki. W Twoim przypadku problem powodują linie:
float *suma = new float[proby];
//...
suma[i] += floor(86400.0 / czasy[j]);
Przy deklarowaniu tablicy dynamicznej nie masz gwarancji, że wszystkie jej elementy zostaną wyzerowane. VS rezerwuje dla Ciebie po prostu fragment pamięci wraz ze wszystkim co tam akurat jest. Musisz ręcznie iterować po takiej tablicy i ustawić 0. W gcc/codeblock ten sam problem też może wystąpić przy większych tablicach.
Ja go nie używam do zadań na spoju. Służy on do przyśpieszenie budowy projektu, składającego się z wielu plików, a tutaj mamy zawsze jeden plik. We właściwościach projektu możesz to wyłączyć:
Co do:
system("pause");
lepiej jest stawiać breakpoint’a na return 0, bo prawdopodobnie i tak odpalasz program w debugu. Nie trzeba pamiętać, żeby to potem usunąć.
Nie wyrzuca, a przynajmniej nie u mnie. Zmieniłem Twój kod na taki:
i program w VS kończy się bezbłędnie.