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
desislava777 avatar desislava777 165 Точки

Здравейте. Понеже съм много по запозната с C# Java, предлагам 3 кратки решения на тези езици: 2 на С# и 1 на Java. Предполагам, че може да се направи подобен код и на С++. Дано да бъдат от полза: https://pastebin.com/UZB0eWui   https://pastebin.com/81t8cycQ  https://pastebin.com/zsgnbrkx .

-1
sharli avatar sharli 14 Точки

Благодаря за отговора.Аз също пиша на С#.toString в С++ е доста по различно и не върши добра работа.Java кода изписа ето това:

This page has been removed!

This page is no longer available. It has either expired, been removed by its creator, or removed by one of the Pastebin staff.

Проблема в случая е че,олимпиадите и състезанията по информатика са само и единствено на С++.

Приятен ден.

0
desislava777 avatar desislava777 165 Точки

Благодаря.

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