Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Вопрос по символу ENTER

#cpp #visual_cpp


Пишу программу с использованием математических операторов по книге. Возник вопрос
(который возможно был уже задан): как правильно в условии if, символ b заменить на
ENTER? Подскажите, пожалуйста.

#include "stdafx.h"
#include  
#include  
#include  
#include 

using namespace std;

#define PRINT(STR, VAR) \
    cout << STR " = " << VAR << endl;

int main()
{
    int i, j, k;
    float u, v, w;
    char c = 0;

    while(true){
        cout << "enter an integer: ";
        cin >> j;
        cout << "enter another integer: ";
        cin >> k;
        PRINT("j", j); PRINT("k", k);
        i = j + k; PRINT("j + k", i)
            i = j - k; PRINT("j - k", i)
            i = k / j; PRINT("k / j", i)
            i = k * j; PRINT("k * j", i)
            i = k % j; PRINT("k % j", i)
            j %= k;    PRINT("j %= k", j);

        _getch();
        system("cls"); 

        cout << "Enter a floating-point number: ";
        cin >> v;
        cout << "Enter another floating-point number: ";
        cin >> w;
        PRINT("v", v); PRINT("w", w);
        u = v + w; PRINT("v + w", u);
        u = v - w; PRINT("v - w", u);
        u = v * w; PRINT("v * w", u);
        u = v / w; PRINT("v / w", u);

        u += v; PRINT("u += v", u);
        u -= v; PRINT("u -= v", u);
        u *= v; PRINT("u *= v", u);
        u /= v; PRINT("u /= v", u);
        _getch();
        cout << endl;
        cout << "Would you like to try again? " << endl;
        cout << "if YES than press 'b'" << endl;
        cout << "if NO than press 'q' " << endl;
        cin >> c;
        if (c == 'q'){
            break;
        }
        else if(c == 'b'){
            system("cls"); 
            continue;
        }
    }
    _getch();
    return 0;
}

    


Ответы

Ответ 1



Ваша cin >> c; отказывается читать клавишу Enter потому что по умолчанию std::cin работает в режиме пропуска "пробельных символов" (перевод строки, пробел, табуляция и т.п.). Включите режим noskipws и Enter будет прекрасно читаться std::cin >> std::noskipws >> c; if (c == '\n'){ ... Этот способ не поможет вам прочитать пробел или табуляцию, но как раз таки именно перевод строки вы им прочитать сможете.

Ответ 2



Если я вас правильно понял, то проверка должна быть такой if (c == 'q') { break; } ................ вообще, правильней было бы написать так while(с!='q'){ ...... cin >> c; }

Ответ 3



Я бы использовал тогда нестандартную функцию getch(), потому что cin>>c будет игнорировать все Enterы.

Ответ 4



c = getch(); if (c == 13){...} коды клавиш 13 Enter 27 escape 8 backspace 32 space

Ответ 5



Получилось так в результате. Спасибо всем, кто отписался! int main() { int i, j, k; float u, v, w; char c = 0; while(true){ cout << "enter an integer: "; cin >> j; cout << "enter another integer: "; cin >> k; PRINT("j", j); PRINT("k", k); i = j + k; PRINT("j + k", i) i = j - k; PRINT("j - k", i) i = k / j; PRINT("k / j", i) i = k * j; PRINT("k * j", i) i = k % j; PRINT("k % j", i) j %= k; PRINT("j %= k", j); _getch(); system("cls"); cout << "Enter a floating-point number: "; cin >> v; cout << "Enter another floating-point number: "; cin >> w; PRINT("v", v); PRINT("w", w); u = v + w; PRINT("v + w", u); u = v - w; PRINT("v - w", u); u = v * w; PRINT("v * w", u); u = v / w; PRINT("v / w", u); u += v; PRINT("u += v", u); u -= v; PRINT("u -= v", u); u *= v; PRINT("u *= v", u); u /= v; PRINT("u /= v", u); _getch(); cout << endl; cout << "Would you like to try again? " << endl; cout << "if YES than press 'ENTER'" << endl; cout << "if NO than press 'q' " << endl; c = _getch(); if(c == 'q'){ break; } else if (c == 13){ system("cls"); continue; } } _getch(); return 0; }

Ответ 6



Код Enter - 13 Просто введи 13 в нужное месте KappaPride

Комментариев нет:

Отправить комментарий