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

323
01 августа 2017, 17:41

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

#include "stdafx.h"
#include <iostream> 
#include <conio.h> 
#include <cstdlib> 
#include <ctime>
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;
}
Answer 1
c = getch();
if (c == 13){...}

коды клавиш

  • 13 Enter
  • 27 escape
  • 8 backspace
  • 32 space
Answer 2

Ваша

cin >> c;

отказывается читать клавишу Enter потому что по умолчанию std::cin работает в режиме пропуска "пробельных символов" (перевод строки, пробел, табуляция и т.п.). Включите режим noskipws и Enter будет прекрасно читаться

std::cin >> std::noskipws >> c;
if (c == '\n'){
  ...

Этот способ не поможет вам прочитать пробел или табуляцию, но как раз таки именно перевод строки вы им прочитать сможете.

Answer 3

Если я вас правильно понял, то проверка должна быть такой

 if (c == 'q') {
  break;
 }

................

вообще, правильней было бы написать так

while(с!='q'){
......
        cin >> c;
}
Answer 4

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

Answer 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;
    }
Answer 6

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

READ ALSO
Как в input вывести label?

Как в input вывести label?

В инпут я подтягиваю компанию ajaxом, а id компании записываю в @HtmlHiddenFor

415
Цвет пункта меню

Цвет пункта меню

Здравствуйте, мне надо, чтобы я смог повесить на секцию id="active" и при скроллинге на эту секцию нужный мне пункт меню менял цвет с черного на зеленыйТо...

294
Parallax эффект для background

Parallax эффект для background

Подскажите инструмент , желательно с RU документацией и минимальной нагрузкой , для реализации Parallax эффекта у background

280
Скрыть и показать по нажатию элементы списка в зависимости от их количества

Скрыть и показать по нажатию элементы списка в зависимости от их количества

На разных страницах сайта есть списки разной длины от 5 до ~50 пунктовСписки оформлены в виде следующей конструкции:

309