Добрый вечер. При выполнении лабораторной столкнулся с проблемой. Написал код, но в итоговом решении "игнорируется" код, где проходит проверка условия.
Собственно, пользователю нужно ввести числа от 0 до 8 для дальнейшей работы с ними
написал код if((k || l)>8 || (k || l)<0), либо писал (8 < (k || l) < 0), ни то, ни другое не получилось.
printf("\nОшибка!!! Вы ввели неверные значения, введите значения от 0 до 8.\n");
else ...
В общем, ввожу числа, не входящие в данный диапазон, сообщение об ошибке не выводит, и программа переходит к блоку else и выполняет его
Другие языки программирования и технологии
Нужна небольшая помощь c++.
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;
Руслан Сулейманов
Благодарю
#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");
}
#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 никогда не срабатывал. А правельные ответы выше
Похожие вопросы
- Программирование на языке Си. Нужна небольшая помощь.
- помогите пожалуйста кто смыслит в C# или в C++, очень нужна ваша помощь, нужен код программы, точнее двух
- Небольшая помощь по С++
- Для чего нужен return в C++ ?например return 0;
- Зачем нужен конструктор в c#?
- Зачем нужны указатели в c++? начал изучать язык C++ и не очень понимаю зачем нужны указатели?
- да зачем нужны эти указатели ?? C++. Зачем нужны указатели? почему не обойтись без простой переменной??
- Зачем нужны классы в c++? Никак не могу понять... Что такое private, public зачем они нужны и т. д?
- хелп! нужна прога на C
- Господа, программисты, неопытному юзеру ОЧЕНЬ нужна Ваше помощь - установила 2 Windows