Jak wykonać pętlę(funkcje?), która będzie czekała aż użytkownik naciśnie jakikolwiek klawisz żeby kontynuować program?

- Rejestracja:około 13 lat
- Ostatnio:prawie 11 lat
0
#include <iostream>
using namespace std;
void funkcja();
/**************************************************************/
int main()
{
funkcja();
}
/**************************************************************/
void funkcja()
{
char klawisz;
do
{cin >> klawisz;}
while(klawisz==NULL);
cout << "Wcisnales cos.. koniec";
}
Tak.
Edit:
#include <iostream>
#include<string>
using namespace std;
void funkcja();
int main()
{
funkcja();
cout << "Podaj imie: ";
string imie;
cin >> imie;
cout << "nazywasz sie " << imie << endl;
cin.ignore();
cin.get();
}
void funkcja()
{
char klawisz;
cin >> klawisz;
}
edytowany 5x, ostatnio: MVC
Zobacz pozostałe 3 komentarze

Azarien
działa, ale jest niepotrzebne. cin>> czeka na enter, do zmiennej klawisz zapisze pierwszy znak, a porównanie do NULL i pętla nie mają znaczenia.

_13th_Dragon
Porównywanie znaku do wskaźnika = -1.

Azarien
NULL jest równy 0, a wciśnięty klawisz raczej zawsze jest ≠0, więc warunek jest niespełniony, pętla wykona się raz. gdzie tu masz -1?

_13th_Dragon
@Azarien, ja z tobą całkowicie się zgadzam. Ale nawet gdyby ten warunek działał (w jakimś innym przykładzie) to sam fakt porównywania wskaźnika do znaku mnie razi w oczy. (= -1) - miałem na myśli że zabrałem wartość postu.

Azarien
ale NULL w C++ to tylko "#define NULL 0". dopiero nullptr jest prawdziwym wskaźnikiem. a że razi - oczywiście.

- Rejestracja:około 13 lat
- Ostatnio:prawie 11 lat
0
#include <iostream>
#include<string>
using namespace std;
void funkcja();
int main()
{
funkcja();
cout << "Podaj imie: ";
string imie;
cin >> imie;
cout << "nazywasz sie " << imie << endl;
cin.ignore();
cin.get();
}
void funkcja()
{
char klawisz;
do
{cin >> klawisz;}while(klawisz==NULL);
cout << "Wcisnales cos.. koniec petli " << endl;
}

- Rejestracja:około 16 lat
- Ostatnio:prawie 10 lat
- Postów:68
1
#include <iostream>
#include <conio.h>
using namespace std;
void funkcja()
{
_getch();
cout << "Wcisnales cos.. koniec";
//_getch();
}
int main()
{
funkcja();
}
edytowany 5x, ostatnio: carck3r

Kolejne porównywanie znaku do wskaźnika.

Nie ma żadnego porównania.

Ale było ;P Jak jeszcze wywalisz "char klawisz = " to już będzie w tym jakiś sens.

Właśnie myślałem o wywaleniu tego. "Po co mi ta zmienna? O.o"

- Rejestracja:ponad 19 lat
- Ostatnio:3 miesiące
0
Jeżyki C/C++ nie posiadają wbudowanej biblioteki aby zrealizować kontynuacje po naciśnięciu klawisza.
Można jedynie czekać na <enter> a po tym wywalić z bufora klawiatury wszystko co tam trafiło:
cin.sync();cin.get();cin.sync();
Ale jest mnóstwo bibliotek które dla konkretnego systemu operacyjnego zrobią dokładnie to co chcesz.
getch() // <conio.h> - występuję (raczej występował) w kompilatorach Borlanda
_getch() // <conio.h> - gcc zrobił łaskę
oraz natywne biblioteki takie jak np. WinAPI - pod windows.
np: http://msdn.microsoft.com/en-us/library/windows/desktop/ms685035%28v=vs.85%29.aspx
- Można nawet czekać na poruszenie myszy.
edytowany 1x, ostatnio: _13th_Dragon