Функции перевод из десятичной системы в двоичную на языке Си/Си++

Задание

Написать программу, которая переводят десятичное число в двоичную систему счисления.

Решение

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


Вариант 1: реализация при помощи массива (Си)


#include "stdio.h"
#include "conio.h"
#include "locale.h"

int main(int argc, char* argv[])
{
 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;
 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;
}
 

Вариант 2: реализация программы при помощи побитового сдвига вправо (Си):

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


#include "stdio.h"
#include "conio.h"
#include "locale.h"

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++;
 }
 printf("В двоичной системе: ");
 i = i - 1;
 for (; i >= 0; i--)
 printf("%d", mass[i]);
 _getch();
 return(0);
}
int main(int argc, char* argv[])
{
 setlocale(0, "RUS");
 int a;
 printf("Введите целое десятичное число: ");
 scanf_s("%d", &a);
 my_func(a); //передаем в функцию число, которое нужно перевести
}
 

Вариант 3: при помощи рекурсивной функции (Си++):


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

using namespace std;

void Func(int n) {

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

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

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

Все три варианта в одной программе

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


#include <iostream>
#include "conio.h"
#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;
}

Опубликовано

в

от

Метки:

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *