В
Все
Х
Химия
В
Видео-ответы
А
Алгебра
Г
Геометрия
О
ОБЖ
Д
Другие предметы
У
Українська література
Р
Русский язык
Б
Беларуская мова
У
Українська мова
Э
Экономика
Ф
Физика
М
Математика
Ф
Французский язык
Г
География
И
Информатика
М
МХК
О
Окружающий мир
П
Психология
Н
Немецкий язык
О
Обществознание
П
Право
И
История
М
Музыка
Л
Литература
Қ
Қазақ тiлi
Б
Биология
А
Английский язык
DashaKuhal
DashaKuhal
24.06.2021 05:39 •  Информатика

Написать рекурсивную процедуру, переводящую числа из одной системы счисления в другую. (язык c++)

Ответ:
yana14102004
yana14102004
07.10.2020 16:12
#include <iostream>
#include <iomanip>
using namespace std;

// перевод из основания frm в основание 10
void snd(int frm,int* n,char s[]) {
   int m,p;
   m=strlen(s); 
   if (m>0) {
      if (s[m-1]<58) p=s[m-1]-48;      
      else  p=s[m-1]-'a'+10;   
      s[m-1]=0; snd(frm,n,s);
   } 
   else p=0;
   *n=*n*frm+p;
}

// перевод числа n из основания 10 в to
void dsn(int* n,int to,char s[]) {
   static int k=0;
   int m;
   m=*n%to; *n/=to;  k++;
   if (*n>0) dsn(n,to,s);
   else { s[k]=0; k=0; }
   if (m<10) s[k]=m+48;
   else s[k]=m+'a'-10;
   k++;
}  

int main() {
  
  int osns,osnd;
  int n=0;
  char s[30];
  cout<<"from osn: "; cin>>osns;
  cout<<"number: "; cin>>s; 
  cout<<"to osn: ";  cin>>osnd;
  snd(osns,&n,s);
  dsn(&n,osnd,s);
  cout<<s<<endl;
  system("pause");
  return 0;
}

from osn: 5
number: 13211
to osn: 16
420

from osn: 16
number: 2f3de
no osn: 6
4051502
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?