Перевод в восьмеричную систему счисления - 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д