Перевод в восьмеричную систему счисления - C (СИ) (150136)
Формулировка задачи:
Ребята, привет! Пожалуйста, скиньте готовую программу для вот такой задачи (на Си)
Ввести двузначное целое число х<15. Написать программу перевода его в восьмеричную систему счисления.
Я нашла много вариантов (и сама старалась делала), но все не подходит .
Пожалуйста! Пожалуйста! Пожалуйста!
Решение задачи: «Перевод в восьмеричную систему счисления»
textual
Листинг программы
#include<stdio.h> #include<conio.h> #include<ctype.h> #include<math.h> int main(){ int i=0, x=0, baseto; float basefrom; char a[20]={'\0'}, b[20], *p=a; scanf_s("%f", &basefrom); scanf_s("%d", &baseto); getchar(); gets(a); while(*(p + 1)) ++p; for(; p >= a; --p, ++i) { if(*p > '9'){ *p=toupper(*p); *p-=7; } x += (*p - 48) * (int)pow(basefrom, i); } i = 0; while (x) { b[i] = x%baseto; x /= baseto; ++i; } while(--i >= 0){ b[i] > 9? printf("%c", b[i] + 55): printf("%d", b[i]); }; _getch (); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода, строками и математическими операциями.
- Объявляем переменные:
- i - счетчик для цикла;
- x - переменная для хранения результата;
- baseto - основание системы счисления, в которую необходимо перевести число;
- basefrom - основание системы счисления, из которой необходимо перевести число;
- a - строка, в которую будет записано вводимое число в восьмеричной системе счисления;
- b - массив, в который будут записаны цифры числа в двоичной системе счисления;
- p - указатель на первый элемент массива a;
- scanf_s - функция для безопасного ввода числового значения;
- gets - функция для получения строки от пользователя;
- toupper - функция для приведения символа к верхнему регистру;
- pow - функция для возведения числа в степень.
- В функции main() объявляем точку входа в программу.
- Задаем значения переменным:
- i = 0;
- x = 0;
- baseto = 8;
- basefrom = 10;
- a[20] = {'\0'};
- b[20] = {'\0'};
- p = a;
- Вводим значение числа в десятеричной системе счисления и основание системы счисления, из которой необходимо перевести число:
scanf_s(
%f
, &basefrom); scanf_s(%d
, &baseto); - Получаем символ конца строки: getchar();
- Получаем строку с числом в восьмеричной системе счисления: gets(a);
- Удаляем символ конца строки: while(*(p + 1)) ++p;
- Переводим число из восьмеричной системы счисления в десятичную систему счисления: for(; p >= a; --p, ++i) { if(p > '9'){ p=toupper(p); p-=7; } x += (p - 48) (int)pow(basefrom, i); }
- Устанавливаем счетчик i в 0: i = 0;
- Переводим число из десятичной системы счисления в двоичную систему счисления: while (x) { b[i] = x%baseto; x /= baseto; ++i; }
- Выводим результат на экран:
while(--i >= 0){
b[i] > 9? printf(
%c
, b[i] + 55): printf(%d
, b[i]); } - Завершаем программу: _getch (); return 0;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д