Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++] работа с числами


Автор: Death_muse 2.12.2007, 07:00
Помоги те люди плиз  со следующей лабой. Самое интересное что её сдавать её скоро, а мы еще такую тему не проходили.
так вот: Определить число единиц в каждом байте длинного целого числа N.
 

Автор: orthrus 2.12.2007, 09:28
Код

#include <iostream>

using namespace std;

int main(){
    unsigned long int i = 0xffffffff; // обрабатываемое число
    while (i!=0) //пока число неравно 0 значит есть единички
    {
       int res = 0; // счетчик кол-ва битов "="ых 1 в байте
       int b = 0; //счетчик просмотренных битов
       while (b<8)  // пока не пробежим 8-мь битов
       {
          b++;
          if ((i & 1) == 1) res++;   // если последний бит = 1 то увеличиваем счетчик
          i >>= 1; // сдвигаем число i на один разряд вправо
       }
       cout << res << endl;
    }
    return 0;
}

Автор: Death_muse 4.12.2007, 20:45
Спасибо большое я уже по уши должник этого классного форума.
Только у меня один вопрос: что такое "endl"

Автор: zkv 4.12.2007, 21:55
Цитата(Death_muse @  4.12.2007,  20:45 Найти цитируемый пост)
Только у меня один вопрос: что такое "endl" 

это перевод на новую строку + сброс содержимого буфера потока.
В цикле предпочтительнее (из-за сброса) просто переводить строку:
Код

 cout << res << '\n';

Автор: Death_muse 4.12.2007, 22:53
и еще вот вопросик небольшой:orthus а какую фуекцию ты используешь в выложенном алгоритме для ввода прозвольного числа?

Автор: orthrus 5.12.2007, 06:21
там не используется ни каких функция для ввода произвольного числа, там обрабатывается число содержащееся в переменной 

Код

unsigned long int i  = 0xffffffff;



Автор: Death_muse 5.12.2007, 20:50
Понятно а вот небольшой вопросик: если препод скажет мне свое произольное число N  то есть в данном случае i то мне какую предочительней использовать функцию ввода: scanf или cin?

Автор: orthrus 6.12.2007, 04:19
а это как тебе удобнее, можешь просто i присвоить нужное значение и скомпилировать прогу заново.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)