Другие языки программирования и технологии

Нужна небольшая помощь c++.

Добрый вечер. При выполнении лабораторной столкнулся с проблемой. Написал код, но в итоговом решении "игнорируется" код, где проходит проверка условия.
Собственно, пользователю нужно ввести числа от 0 до 8 для дальнейшей работы с ними
написал код if((k || l)>8 || (k || l)<0), либо писал (8 < (k || l) < 0), ни то, ни другое не получилось.
printf("\nОшибка!!! Вы ввели неверные значения, введите значения от 0 до 8.\n");
else ...
В общем, ввожу числа, не входящие в данный диапазон, сообщение об ошибке не выводит, и программа переходит к блоку else и выполняет его
do {cin>>k>>I; if(k<=8 && k>=0 && l<=8 && l>=0)break; cout<<"k and I must be in 0..8!\n";} while true;
Ухватов Николай
Ухватов Николай
89 218
Лучший ответ
#include <iostream>
#include <string>
#include <limits>
#include <vector>
using namespace std;
int integer(int left = numeric_limits<int>::min(), int right = numeric_limits<int>::max()) {
if (left > right) swap(left, right);
const auto between = [=](const int value) { return value > left && value < right; };
int number;
string buffer;
while (true) {
cout << "Input number: ";
cin >> buffer;
try {
number = stoi(buffer);
} catch (exception& e) {
cerr << "Error: " << e.what() << "\nType: " << typeid(e).name() << '\n';
continue;
}
if (between(number)) break;
else cerr << "Error: incorrect value!\n";
}
return number;
}
int main() {
vector<int> box(10);
for (auto &value : box) value = integer(0, 8);
system("cls");
cout << "Result: ";
for (const auto value : box) cout << ' ' << value;
cout.put('\n');
system("pause");
}
if(k > 8 || l >8 || k < 0 || l < 0)
Руслан Сулейманов Вот оно как.. Спасибо
Смешно. (k || l) выдаст истину, если либо k, либо l будет != 0. Т. е. из (k || l) может выйти 1 или 0 (истина и ложь соответственно). Потом ты 0 или 1 сравниваешь с > 8 и < 0. А 0 и 1 всегда меньше 8 и не меньше 0. Как я понял у тебя if никогда не срабатывал. А правельные ответы выше