Иллюстрированный самоучитель по С++ для начинающих

Решения (задачи 160-179)

Задача 177.

// Преобразует двоичное число в десятичное
#include <stdio.h> #include <conio.h> #include "string.h" void main()
char bin[16]; // изображение двоичного числа
long int dec; // десятичное число
int i; // номер разряда двоичного числа
int v; // вес i-ro разряда двоичного числа
printf("Введите восьмиразрядное двоичное число ");
printf("n нажмите Enter"); printf(" › ");
scanf("%s", &bin);
dec = 0;
v = 1; // вес младшего (0-го) разряда двоичного числа
for (i = strlen(bin) -1; i >= 0; i– )
if (bin[i] == Ч1) dec += v;
v *= 2; // вес следующего разряда }
printf("Двоичному числу %s", bin);
printf("соответствует десятичное %d", dec);
printf("\п Для завершения нажмите Enter");
getch();

Задача 178.

// Преобразует шестнадцатеричное число в десятичное
// разобраться с переполнением
include <stdio.h> #include <conio.h> #include "string.h" 'Void main()
char st[5]; // шестнадцатеричное число
unsigned int dec;// десятичное число
int v; // вес разряда шестнадцатеричного числа
int err =0; // err == 1 – в строке недопустимый символ
int i;
ntf("Введите шестнадцатеричное ");
printf("(не более 4-х знаков) число\п");
printf(" › "); scanf("%s",&st);
// преобразуем введенную строку к верхнему регистру strupr(st);
dec = 0;
v = 1; // вес младшего разряда шестнадцатеричного
// числа
for (i = strlen(st) -1; i >= 0; i-) {
//printf("\n%d\n",v); if (st[i] >= '01 && art til] <= '9') dec += v * (st[i] – 48);
// (int)'0'=48, (int)'l'=49
// и т.д .else if (st[i] >= 'A' && st[i] <= 'F')
// (int)'A'=65, (int)'B'=66 и т.д.
// А обозначает 10, В – 11 и т.д .dec += v * (st[i] – 55);
else // недопустимый символ { err = 1; break; } v *= 16;
// вес следующего разряда
if (!err) {
printf("Шестнадцатеричному числу %s ", st);
printf("соответствует десятичное %u\n", dec);
else (
printf("Строка %s не является ", st);
printf("шестнадцатеричным числом\п"); }
printf("\п Для завершения нажмите Enter");
getch();

Задача 179.

// Преобразует десятичное число в другую систему счисления (от 2-х до 10-ти)
#include <stdio.h> #include <conio.h> void main()
int osn, // основание системы счисления n, // исходное число en,
// копия исходного числа г; // остаток от деления числа
//на основание сист. счисл .char st[17]; // представление числа в заданной
// системе счисления int i;
printf("Х Введите целое число › ");
scanf("%d", &n);
printf("Введите основание системы счисления › ");
scanf("%d", &osn);
en = n;
// делим исходное число на основание системы
// счисления до тех пор, пока остаток от деления
// больше основания системы счисления.
// Остаток от деления на каждом щаге – очередная цифра
st[16] ='\0';
i = 15;
do {
г = n % osn; // очередная цифра
n = n / osn; // целая часть деления
// printf("цифра:%d остаток:%d\n", r,n);
st[i-] = г + 48; // преобразование цифры в символ } while (n > 0);
// "сдвинем" сформированную строку в начало
int j = 0; while(st[i])
st [j++] = st St[j] = '\0';
printf("Десятичному числу %d соответствует ", en);
printf("число %s по основанию %d\n", st, osn);
printf("Хп Для завершения нажмите Enter");
getch();
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.