(C++) Aplikacja zamyka się w sposób nieoczekiwany bez podawania wyniku

Cześć!

Ostatnio postanowiłem sobie przypomnieć C++ i ogólnie mam drobny problem, ponieważ gdy wykonuję prosty program to zamyka się on w sposób nieoczekiwany i nawet nie wiem czy wynik został poprawnie wykonany. Ma ktoś pomysł na to co jest nie tak i co tu poprawić? Fajnie by było jak by ktoś pokazał mi jak to powinno wyglądać w poprawnej wersji.
Pozdrawiam!

Oto kod:
#include “stdafx.h”
#include

using namespace std;

int main()
{
/* Zmienne */
int m = (0);
int k = (0);
int w = (0);
int u = (0);
int r = (0);
int x = (0);
m = 0;
k = 0;
w = 0;
u = 0;
r = 0;
x = 0;

/* Wejście danych */
cout << "Podaj liczbe A: ";
cin >> k;
cout << "Podaj liczbe B: ";
cin >> w;
cout << "Podaj wzrost liczby: ";
cin >> m;

/* Obliczenia */
if (k <= w) do
{
	k = k + m;
	u = u + 1;
} while (k >= w);
if (k >= w) cout << "Wynik: " + u;
return 0;
;

}

Program się wykonał więc konsola się zamknęła. Masz co najmniej 3 opcje na przechwycenie wyniku, z czego daw powodują zatrzymanie konsoli przed zakończeniem programu. Po kolei:

  1. By przechwycić program wystarczy, że uruchomisz konsolę (cmd), przejdziesz w miejsce gdzie masz plik wykonywalne exe i go uruchomisz z poziomu konsoli wpisując jego nazwę, np: firstprogram.exe w konsoli
  2. Tutaj będzie zatrzymanie konsoli po wykonaniu programu, musisz przed zakończeniem programu dodać linijkę z wywołaniem funkcji getchar() która zatrzyma konsolę do momentu wciśnięcia klawisza. Jest to rozwiązanie które zadziała zarówno pod windowsem jak i linuxem. Mniej więcej tak będzie wyglądała funkcja main Twojego programu:
int main(int argc, char * argv[])
{
    // jakis kod

    std::getchar();

    return 0;
}

Oczywiście musisz jeszcze zaimportować odpowiednią bibliotekę by ta funkcja była dostępna - cstdio

  1. Trzeci sposób analogiczny do drugiego, dodajesz kod w tym samym miejscu, różnica jest taka, że wykorzystujesz rozwiązanie wbudowane w system Windows i zadziała tylko pod tym systemem. Tylko zamiast wywoływać funkcję getchar() wywołujesz system("pause"). Tym razem musisz zaimportować stdlib by funkcja system() była dostępna.

Tak naprawdę sposobów na zatrzymanie konsoli jest tyle ilu programistów, wystarczy trochę wygooglować na ten temat.

1 polubienie