Temat: POMOC z prostych zadaniach do 23.11.2012
Paweł Bielecki:
korzystam z Dev ++ ale instrukcje std::cin.get(); system("pause") i return 0; nie działają w pliku exe.
Działają, tylko robią coś innego niż akurat ty oczekujesz ;) Przemyśl najpierw co chciałbyś osiągnąć - chcesz zatrzymać wykonanie programu jednoczesnie go nie kończąc - tak się nie da (upraszczam, żeby nie wdawać się w zaawansowane tematy). Co możesz zrobić to zlecić programowi jakąś operację wymagającą oczekiwania na wejście od użytkownika.
return powoduje wyjście z aktualnej funkcji. W tym wypadku jest to funkcja main, więc kończy to program. Jak napisała Małgorzata - zamiast main(){} powinieneś mieć int main(){return 0;} ale nie ma to nic wspólnego z Twoim problemem, robi wręcz coś odwrotnego - kończy wykonanie programu.
std::cin.get() - ta funkcja pobiera ze strumienia cin jeden znak. Jeśli w strumieniu coś jest to znak zostanie pobrany "od razu" i program ruszy dalej. Jeśli strumień jest pusty, to ta funkcja będzie oczekiwała na wypełnienie go jakimiś danymi - input z klawiatury. W twoim przypadku jest tam chocby "enter" z poprzedniego wstukania liczb, więc ten "enter" zostanie pobrany i program ruszy sobie dalej i w twoim przypadku zakończy się
system("pause") - funkcja system() wykonuje polecenie systemowe, czyli to tak jakbyś sobie wpisał w konsoli "pause". To jest bardzo zły sposób na zatrzymywanie programu bo nie w każdym kontekście uruchomienia(inny system, inna konsola, inne zmienne środowiskowe itp.) programu jest coś takiego jak "pause". W skrócie - nie rób tak.
Pomyśl natomiast co chcesz osiągnąć - chcesz mieć czas by zobaczyć co twój program wypisał na standardowy strumień wyjścia cout.
Pomyśl teraz jak to osiągnąć - możesz kazać programowi robić coś bezsensownego w kółko np. while(true); i przerwać mu to kiedy już się napatrzysz. Możesz zatrzymać go w oczekiwaniu na wejście z klawiatury.
Możesz też nie kombinować i pozwolić mu się spokojnie zakończyć a wyniki zobaczyć sobie potem.
Ostatnie możesz osiągnąć np. otwierając sobie konsolę i wywołując swój program z tego miejsca. Program się szczęśliwie skończy a sesja konsoli pozostanie otwarta. Możesz sobie to nawet przekierowac do pliku: mojprogram.exe > mojlog.txt.
Jesli koniecznie chcesz, żeby jednak twój program dalej sobie chodził kiedy patrzysz na jego wyniki to możesz mu np. kazać czekac na wprowadzenie liczby albo literki 'q'. Z enterem jest ten problem, że po poprzednich użyciach cin prawdopodobnie już go tam masz, więc to nie zatrzyma programu. Możesz wcześniej np. wyczyściś ten strumień, zeby cokolwiek tam jest nie zawadzało ci (std::cin.ignore(...)).
Najprościej jest jednak po prostu pozwolić programowi się skończyć, tylko uruchamiać go w sposób, który pozwoli ci zobaczyć jego wyniki (j.w.).