Хотя Loops: простая программа деления, выдающая ноль, не понимаю, почему - PullRequest
0 голосов
/ 15 октября 2018

НАПРАВЛЕНИЯ: написать цикл while, который печатает userNum, деленное на 2 (целочисленное деление) до достижения 1. Следуйте за каждым числом через пробел.Пример вывода для userNum = 40: 20 10 5 2 1

#include <iostream>
using namespace std;

int main() {
   int userNum;

   cin >> userNum;

   while (userNum >= 1) {
      userNum = userNum / 2;
      cout << userNum << " ";
   }

   cout << endl;

   return 0;
}

ВЫХОД: (userNum = 40; 20 10 5 2 1 0)

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы делаете целочисленное деление.Следовательно, 1/2 = 0,5 после усечения это будет 0

Читая ваш вопрос, кажется, что вы не хотите, чтобы деление 1/2 было сделано.

Если это так, проверьте условие в цикле while. Сделайте его userNum> 1 вместо userNum> = 1

0 голосов
/ 15 октября 2018

В этой части:

userNum = userNum / 2;
cout << userNum << " ";

Когда userNum = 1 (конечная итерация цикла) - 1/2 = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...