Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sprawdzanie czy został wciśnięty Enter

Ostatnio zmodyfikowano 2018-03-25 22:08
Autor Wiadomość
piotrusinio
Temat założony przez niniejszego użytkownika
Sprawdzanie czy został wciśnięty Enter
» 2018-03-23 20:49:29
Witam.
Tworzę program sprawdzający, czy punkt leży na prostej funkcji liniowej. Chciałbym, żeby po wciśnięciu Entera zamiast wpisania liczby pętla do while powtarzała się i znów pytała o liczbę. Wiem tylko, że problem leży w if'ie ale nie wiem jak go naprawić :/ Oto kod:
C/C++
#include <iostream>

using namespace std;
int main() {
    float a = 0, b = 0, x = 0, y = 0;
   
    do {
        cout << "Podaj a:";
        cin >> a;
        if(( int ) a == 13 ) cout << endl;
       
    } while(( float ) a == 13 );
   
    do {
        cout << endl << "Podaj b:";
        cin >> b;
        if(( int ) b == 13 ) cout << endl;
       
    } while(( int ) b == 13 );
   
    do {
        cout << endl << "Podaj x:";
        cin >> x;
        if(( int ) x == 13 ) cout << endl;
       
    } while(( int ) x == 13 );
   
    do {
        cout << endl << "Podaj y:";
        cin >> y;
        if(( int ) y == 13 ) cout << endl;
       
    } while(( int ) y == 13 );
   
    if(( y ) ==(( a * x ) + b ) ) cout << endl << "Punkt nalezy do wykresu"; else cout << "Punkt nie nalezy do wykresu";
    return 0;
}
P-170182
YooSy
» 2018-03-23 22:31:08
Wiem tylko, że problem leży w if'ie
To niewiele.

Nie zrobisz tego w prosty sposób, bo dla typów liczbowych przy wprowadzaniu danych
możesz wcisnąć enter milion razy, a program i tak będzie czekał, aż podasz jakąś wartość.
Można wczytywać dane do stringa (można podać pusty wciskając enter) i sprawdzić czy nie jest pusty.
Jeśli tak powtórzyć operację wczytywania.

Lub: » Kurs C++Obsługa klawiatury za pomocą <conio.h> lekcja
P-170186
piotrusinio
Temat założony przez niniejszego użytkownika
» 2018-03-25 13:06:30
Ok zrobiłem to teraz tak:
C/C++
#include <iostream>
#include <cstdlib>

using namespace std;
int main() {
    string a, b, x, y;
   
    do {
        cout << "Podaj a:";
        cin >> a;
        if( a == "" ) cout << endl;
       
    } while( a == "" );
   
    do {
        cout << endl << "Podaj b:";
        cin >> b;
        if( b == "" ) cout << endl;
       
    } while( b == "" );
   
    do {
        cout << endl << "Podaj x:";
        cin >> x;
        if( x == "" ) cout << endl;
       
    } while( x == "" );
   
    do {
        cout << endl << "Podaj y:";
        cin >> y;
        if( y == "" ) cout << endl;
       
    } while( y == "" );
   
    float a1 = atof( a.c_str() ), b1 = atof( b.c_str() ), x1 = atof( x.c_str() ), y1 = atof( y.c_str() );
    if(( y1 ) ==(( a1 * x1 ) + b1 ) ) cout << endl << "Punkt nalezy do wykresu"; else cout << "Punkt nie nalezy do wykresu";
    return 0;
}
Ale nadal nie działa tak jak bym chciał :/
P-170233
skovv
» 2018-03-25 13:14:47
string a, b, x, y;
P-170234
piotrusinio
Temat założony przez niniejszego użytkownika
» 2018-03-25 13:26:00
Tak mam zrobione i nie działa.
P-170235
pekfos
» 2018-03-25 13:30:33
Użyj getline(), nie >>.
P-170237
piotrusinio
Temat założony przez niniejszego użytkownika
» 2018-03-25 13:34:29
W jaki sposób?
P-170238
pekfos
» 2018-03-25 13:36:26
P-170239
« 1 » 2
  Strona 1 z 2 Następna strona