Пишу программу с использованием математических операторов по книге. Возник вопрос (который возможно был уже задан): как правильно в условии 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;
}
c = getch();
if (c == 13){...}
коды клавиш
Ваша
cin >> c;
отказывается читать клавишу Enter потому что по умолчанию std::cin работает в режиме пропуска "пробельных символов" (перевод строки, пробел, табуляция и т.п.). Включите режим noskipws и Enter будет прекрасно читаться
std::cin >> std::noskipws >> c;
if (c == '\n'){
...
Этот способ не поможет вам прочитать пробел или табуляцию, но как раз таки именно перевод строки вы им прочитать сможете.
Если я вас правильно понял, то проверка должна быть такой
if (c == 'q') {
break;
}
................
вообще, правильней было бы написать так
while(с!='q'){
......
cin >> c;
}
Я бы использовал тогда нестандартную функцию getch(), потому что cin>>c будет игнорировать все Enterы.
Получилось так в результате. Спасибо всем, кто отписался!
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;
}
Код Enter - 13 Просто введи 13 в нужное месте KappaPride
Продвижение своими сайтами как стратегия роста и независимости