Loading...
sharli avatar sharli 14 Точки

Задача С++ Да се напише програма която въвежда цяло число N и извежда числото в двоична бройна с-ма.

Задачата аз я решавам,но по този начин не мога да я обясня на дъщеря ми която е 5-ти клас.

Моля предложете по просто решение,без вектор,само с цикли.

Това е моето решение:

#include<iostream>
#include <algorithm>    
#include <vector> 
using namespace std;


int main(){
    int bin = 0;
    int n;
    cin >> n;
    vector<int> myvector;
    
    do
    {
        bin =n % 2;
        n=n / 2;

        myvector.push_back(bin);

    } while (n>=1);
  reverse(myvector.begin(), myvector.end());
  for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); ++it)
      cout << *it << '\n';
 
    return 0;
}

Тагове:
0
Programming Basics 18/12/2017 15:22:28
ekolev avatar ekolev 13 Точки
Best Answer

Здравейте, 

Има начин, но не зная колко ще е лестно за обяснение на дъщеря ви.  

Можем да превърнем цяло число във бинарно като ползваме бинарни оператори.

Например:

#include <iostream>

using namespace std;

int main() {

    int num;

    /* променяме всички битове от дясно на ляво от 0 към 1, като имаме предивид,че ако всички битове

     * в int са 1, то полученото число е най-високата стойност на int

     * което е 32 единици = 11111111111111111111111111111111 */

    unsigned int highest = 1 << 31;

    cout<<"Please enter a number: ";

    cin>>num;

     /* ще сравним всеки бит от highest със всеки бит от num

      * за тази цел ползваме бинарен AND */

    for(int i = 0; i < 32; i++){

            if( (num & highest) == 0 )

                cout << '0' ;

            else

                cout << '1' ;

            /* местим всички битове в highest един бит надясно

             * за да можем да сравним всеки бит от num със highest */

            highest >>= 1;

        }

    cout<<endl;

}

В този пример принтирам само 0 и 1 като 'char', но вие може да ги добавите в ерей.

За повече информация за бинарни оператори вижте тук: https://bg.wikipedia.org/wiki/Побитови_операции_в_С

Успех:)

0
21/12/2017 22:56:23
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.