#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
Комментариев нет:
Отправить комментарий