Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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; Нарушение авторских прав |