Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Программа перевода числа из десятичной системы счисления в двоичную





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

 

Первый вариант (с использованием указателя)

#include <iostream>

#include <iomanip>

#include <math.h>

#include <conio.h>

#include <String.h>

#include <windows.h>

using namespace std;

int main()

{

if(SetConsoleCP(1251)==0

{

cerr<<"Fialed to set codepage!"<<endl;//если не удалось установить кодовую страницу, вывод сообщения об ошибке

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

long dec; // десятичное число, которое мы будем переводить

byte ost; // остаток от деления на 2 (двоичная цифра)

char tmp[81]; // строка, которая будет хранить двоичное (binary) число

cout << "Введите неотрицательное целое десятичное число ";

cin >> dec;

char *bin;

 

//Указатель, который мы будем использовать для получения символа

bin = &(tmp[80] = 0);

/* Присваиваем указателю bin значение, равное адресу последнего символа строки tmp */

do

{

ost = byte (dec % 2);

*(--bin) = ost + '0';

dec = dec / 2;

} while (dec);

/* Операция декремент (--bin) позволяет записывать цифры в строку в обратном порядке */

cout << "Соответствующее 2-ое число: ";

cout << bin << endl; // выводим значение по адресу bin, а не tmp!

_getch();

return 0;

}

/* При организации повторения программы, необходимо обратить внимание на то, что при каждом повторении указателю bin должнo присваиваться значение адреса последнего символа строки tmp */

 

Второй вариант (с использованием индексации)

#include <iostream>

#include <iomanip>

#include <math.h>

#include <conio.h>

#include <String.h>

#include <windows.h>

using namespace std;

 

int main()

{

if(SetConsoleCP(1251)==0

{

cerr<<"Fialed to set codepage!"<<endl

}

if(SetConsoleOutputCP(1251)==0)

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

long dec;

byte ost;

char bin[81];

cout <<"Введите целое десятичное число --> ";

cin >> dec;

int i = 0; // номер символа в строке

do

{

bin[i++] = dec % 2 + '0'; // записываем цифры в начало строки

dec = dec / 2;

} while (dec);

bin[i] = ‘\0’; // Не забудем отметить конец строки

strrev(bin);

// Для получения правильного ответа строку необходимо перевернуть

cout<<"Соответствующее 2-ое число:\n";

cout<<bin<<endl;

_getch();

return 0;

}

/* Второй вариант может показаться более понятным, однако в этом случае нам пришлось воспользоваться функцией strrev () из библиотеки функций для работы со строками, а использование указателей дает нам больше возможностей по работе с ячейками памяти */

 







Date: 2016-08-30; view: 598; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию