• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konsola ciągle się zamyka :(

0 głosów
1,696 wizyt
pytanie zadane 20 maja 2015 w C i C++ przez Gandalf Obywatel (1,260 p.)

Witam, napisałem programik w C++ dotyczący losowania liczby oraz jej odgadnięcia. Program odpalam bezpośrednio jako .exe, tylko że w momencie odgadnięcia liczby od razu się zamyka nawet nie dając chwili na odczytanie wyniku przez gracza.

Stosowałem już zabiegi z getchar(), system("pause") itd, owszem mogę dodać funkcję Sleep(), ale to mija się z celem, program ma czekać na moją reakcję.

Korzystam z Code::Blocks 13.12, zaś mój kompilator to GNU GCC Compiler.

A oto kodzik:

#include <iostream>
#include <cstdlib> //umozliwia korzystanie z generatora liczb pseudolosowych
#include <time.h> //pobieranie czasu z systemu
#include <stdio.h> //uzycie getchar()

using namespace std;

int main()
{
    int wylosowana, zgadnij;
    int licznik = 0;

    cout << "Losowanie liczb z przedzialu 1..100"
         << endl <<"-----------------------------------"<<endl<<endl;

    srand(time(NULL));
    wylosowana = rand()%100+1;


        while(wylosowana != zgadnij)
        {
            licznik++;
            cout << "Zgadnij liczbe: ";
            cin >> zgadnij;

            if(wylosowana == zgadnij) cout << "Wygrales!";
            else if(wylosowana > zgadnij) cout << "To za malo :( ";
            else if(wylosowana < zgadnij) cout << "To za duzo :( ";
        }
    cout << endl << "Wygrales za: " << licznik << " razem! Gratulacje!";

    getchar();
    getchar();
    system("pause");
    return 0;
}

 

2 odpowiedzi

+1 głos
odpowiedź 20 maja 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)
edycja 2 grudnia 2015 przez Sebastian Fojcik
 
Najlepsza

Spróbuj jeszcze:

#include <conio.h>

getch();
_getch();


Zależnie od środowiska, w jakim piszesz. Zgaduję, że u ciebie będzie getch(). W środowiskach Visual  _getch().

komentarz 20 maja 2015 przez Gandalf Obywatel (1,260 p.)
Sprawdziłem i jeden i drugi sposób, obydwa działają bez zarzutu, dzięki :)

zastosowałem _getch i również działał :)

Chyba tutaj kompilator z poziomu .exe nie miał nic do rzeczy? bo tak to używam mingw32-g++.
komentarz 20 maja 2015 przez Sebastian Fojcik Nałogowiec (43,040 p.)
edycja 20 maja 2015 przez Sebastian Fojcik

Już poprawiłem nieco ostatni akapit. To zależy od środowiska, bo specyfikacja nazwy getch() nie została jasno określona w standardzie języka. Wynika to z faktu, że biblioteka ta nie należy do standardu (widać to po nazwie nagłówka - bo ma ".h").

Według Microsoft w bibliotece <conio.h> nazwa funkcji getch() już nie funkcjonuje.
https://msdn.microsoft.com/en-us/library/ms235446%28VS.80%29.aspx?f=255&MSPPError=-2147217396

Zastąpili ją nową _getch(). Jeśli ciekawi Cię dlaczego, to przeczytaj najlepszą odpowiedź w tym wątku: http://stackoverflow.com/questions/814975/getch-is-deprecated

W skrócie: funkcje wszystkich bibliotek nieopisanych w standardzie, które mimo to producent środowiska postanowił dołączyć jako standardowe, powinny zaczynać się od podkreślenia '_'.

W Visual Studio użycie getch() spowoduje następujący komunikat:

Warning C4996: 'getch': The POSIX name for this item is deprecated.  Instead, use the ISO C++ conformant name: _getch.

Co znaczy mniej więcej tyle: getch to już nieaktualna nazwa, proszę mi jej tu nie używać. Zamiast tego proponuję Tobie, drogi programisto, zgodną z najnowszym standardem języka – ISO C++ nazwę: _getch().

+1 głos
odpowiedź 20 maja 2015 przez shadou102 Pasjonat (21,690 p.)
getchar();
getchar();

Można spokojnie wykreślić.

Podobne pytania

0 głosów
2 odpowiedzi 1,952 wizyt
pytanie zadane 16 marca 2017 w C i C++ przez Kamyyylo Początkujący (460 p.)
+1 głos
3 odpowiedzi 2,777 wizyt
pytanie zadane 1 września 2016 w C i C++ przez MrRozgunek Użytkownik (810 p.)
+1 głos
2 odpowiedzi 337 wizyt
pytanie zadane 25 stycznia 2016 w C i C++ przez adamzoz3 Nowicjusz (130 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...