Главная » Перевод из десятичной системы в двоичную. Си/Си++
14:59

Перевод из десятичной системы в двоичную. Си/Си++


На данной странице расположены три функции языка си/си++, которые переводят десятичное число в двоичную систему счисления. Программы представлены как отдельно, так и в виде одной программы с тремя функциями с последующим вызовом их в main.


Функция первая: реализация идеи при помощи массива


#include "stdafx.h"
#include "conio.h"
#include "stdio.h"

int _tmain(int argc, _TCHAR* argv[])
{
    int a, i, mass[99];
    for (i = 0; i < 99; i++)
    {
        mass[i] = 0;
    }
    scanf_s("%d", &a);
    i = 0;
    while (a != 0)
    {
        if (a % 2 == 0)
        {
            mass[i] = 0;
            a = a / 2;
        }
        else
        {
            mass[i] = 1;
            a = a / 2;
        }
        i++;
    }
    i = i - 1;
    for (; i >= 0;i--)
        printf("%d", mass[i]);
    _getch();
    return 0;
}

 


Реализация программы при помощи побитового сдвига вправо:


Данная программа очень схожа с предыдущей, отличие лишь создании собственной функции и вызова его в main, а также использование побитового сдвига вправо вместо деления на 2.

#include "stdafx.h"
#include "locale.h"
#include "conio.h"
#include "locale.h"

int my_func(int dec)
{
    setlocale(0, "RUS");
    int a, i, mass[99];
    for (i = 0; i < 99; i++)
    {
        mass[i] = 0;
    }
    printf("Введите целое десятичное число: ");
    scanf_s("%d", &a);
    i = 0;
    while (a != 0)
    {
        if (a % 2 == 0)
        {
            mass[i] = 0;
        }
        else
        {
            mass[i] = 1;
        }
        a = a >> 1;
        i++;
    }
    printf("В двоичной системе: ");
    i = i - 1;
    for (; i >= 0;i--)
        printf("%d", mass[i]);
    _getch();
    return(0);
}
int _tmain(int argc, char* argv[])
{
    my_func(1);
}

 


Реализация программы при помощи рекурсивной функции:


#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include "locale.h"

using namespace std;

void rekurs(int n) {

    if (n != 0) 
        rekurs(n / 2);
    else return;

    printf("%d", n % 2);
    return;
}

int main() {
    setlocale(0, "RUS");
    int n;
    cout << "Введите десятичное число: ";
    cin >> n;
    rekurs(n);
    _getch();
    return 0;
}


В нижний код собраны все предыдущие функции в одну программу с вызовом их в основной функции main. Программа на вход принимает 3 различных десятичных числа и считает их соответственно по алгоритмам, которые заданы в main.

#include "stdafx.h"
#include "conio.h"
#include <iostream>
#include "locale.h"


int my_func2(int a)
    {
        int  i, mass[99];
        for (i = 0; i < 99; i++)
        {
            mass[i] = 0;
        }
        i = 0;
        while (a != 0)
        {
            if (a % 2 == 0)
            {
                mass[i] = 0;
                a = a / 2;
            }
            else
            {
                mass[i] = 1;
                a = a / 2;
            }
            i++;
        }
        i = i - 1;
        for (; i >= 0;i--)
            printf("%d", mass[i]);
        return 0;
}

void rekurs(int a) 
{
    if (a != 0)
        rekurs(a / 2);
    else return;
    printf("%d", a % 2);
    return;
}


int my_func(int a)
{
    int  i, mass[99];
    for (i = 0; i < 99; i++)
    {
        mass[i] = 0;
    }
    i = 0;
    while (a != 0)
    {
        if (a % 2 == 0)
        {
            mass[i] = 0;
        }
        else
        {
            mass[i] = 1;
        }
        a = a >> 1;
        i++;
    }
    i=i - 1;
    for (; i >=0;i--)
        printf("%d", mass[i]);
    return(0);
}

int main() {
    setlocale(0, "RUS");
    int a;
    scanf_s("%d", &a);
    printf("Первое число в двоичной:");
    rekurs(a); 
    printf("\n");
    scanf_s("%d", &a);
    printf("Второе число в двоичной:");
    my_func(a);
    printf("\n");
    scanf_s("%d", &a);
    printf("Третье число в двоичной:");
    my_func2(a);
    _getch();
    return 0;
}

 


Похожие материалы:
Нашли ошибку на сайте? Напишите в комментариях!
Категория: Язык программирования: Си/Си++ | Просмотров: 1622 | Добавил: Ученик | Рейтинг: 5.0/1