i должна быть меньше b но почему то в else if программа выводит b. Задача была в том, чтобы вывести все чётные числа из введённого диапозона

Рейтинг: 0Ответов: 1Опубликовано: 20.07.2023
#include <iostream>
using namespace std;

int main()
{
   setlocale(LC_ALL, "rus");
   int a, b;
  
  cin >> a >> b;
   int i { a };
   if (a % 2 == 0)
   {
       while (i < b)
       {
           cout << i << endl;
           i = i + 2;
       }
   }
   else if (a % 2 != 0)
   {
       while (i < b)
       {
           cout << i + 1 << endl;
           i = i + 2;
       }
   }

Ответы

▲ 2Принят

Вы же выводите i+1, поэтому в условии нужно сделать while (i < b-1)

Но проще обойтись одним циклом

for(int i=a+a%2; i<b; i+=2)
      cout << i << endl;

(кроме того, стоит контролировать, что введенное значение a меньше b)