Перевод в восьмеричную систему счисления - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода, строками и математическими операциями.
  2. Объявляем переменные:
    • i - счетчик для цикла;
    • x - переменная для хранения результата;
    • baseto - основание системы счисления, в которую необходимо перевести число;
    • basefrom - основание системы счисления, из которой необходимо перевести число;
    • a - строка, в которую будет записано вводимое число в восьмеричной системе счисления;
    • b - массив, в который будут записаны цифры числа в двоичной системе счисления;
    • p - указатель на первый элемент массива a;
    • scanf_s - функция для безопасного ввода числового значения;
    • gets - функция для получения строки от пользователя;
    • toupper - функция для приведения символа к верхнему регистру;
    • pow - функция для возведения числа в степень.
  3. В функции main() объявляем точку входа в программу.
  4. Задаем значения переменным:
    • i = 0;
    • x = 0;
    • baseto = 8;
    • basefrom = 10;
    • a[20] = {'\0'};
    • b[20] = {'\0'};
    • p = a;
  5. Вводим значение числа в десятеричной системе счисления и основание системы счисления, из которой необходимо перевести число: scanf_s(%f, &basefrom); scanf_s(%d, &baseto);
  6. Получаем символ конца строки: getchar();
  7. Получаем строку с числом в восьмеричной системе счисления: gets(a);
  8. Удаляем символ конца строки: while(*(p + 1)) ++p;
  9. Переводим число из восьмеричной системы счисления в десятичную систему счисления: for(; p >= a; --p, ++i) { if(p > '9'){ p=toupper(p); p-=7; } x += (p - 48) (int)pow(basefrom, i); }
  10. Устанавливаем счетчик i в 0: i = 0;
  11. Переводим число из десятичной системы счисления в двоичную систему счисления: while (x) { b[i] = x%baseto; x /= baseto; ++i; }
  12. Выводим результат на экран: while(--i >= 0){ b[i] > 9? printf(%c, b[i] + 55): printf(%d, b[i]); }
  13. Завершаем программу: _getch (); return 0;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы