Ну, так как это домашняя работа, мы могли бы просто опубликовать код и двигаться дальше, но я постараюсь объяснить, что происходит:
#include <iostream>
int main() {
int x,y;
std::cout << "This program will show all even numbers between a certain "
"range.\n\nEnter two integers >0 and <100. The first integer must be smaller "
"than the second integer.\n";
do {
std::cin>>x>>y;
} while(x >= y || x <= 0 || y >= 100);
x+=1; // we update the value with 1, to make sure we don't print the start value, and we start with the first even value
do {
if(x % 2 == 0) {
std::cout << x << std::endl;
}
x++;
} while(x < y);
}
Что не так в вашем коде? Первое, что пошло не так, это то, что вы несколько раз просили ввод для разных условий. Нам нужно только один раз спросить пользователя о вводе, и мы проверим, соответствует ли этот ввод нашим условиям, в противном случае мы снова запросим у пользователя новый ввод.
Кроме того, эта часть также была неправильной:
if ((b % 2) == 0)
{
do
{
std::cout << b;
b++;
} while (b < y);
}
Почему?
Хорошо, потому что в этом случае вы только запускаете do-while l oop, если вход число четное Так, например, при вводе 40 он запускает do-while l oop, а с 41 - нет.
Также в do-while l oop вы продолжаете печатать все числа, даже если они даже не Это потому, что оператор if не проверяется в do-while l oop