Форум программистов, компьютерный форум CyberForum.ru

Задача: конвертация из одной системы счисления в другую - C++

Восстановить пароль Регистрация
 
arreke
0 / 0 / 0
Регистрация: 14.05.2012
Сообщений: 13
18.09.2012, 10:38     Задача: конвертация из одной системы счисления в другую #1
Описание

Имеются 2 цифры в разных системах счисления, цель задачи найти, в каких системах счисления 2 цифры равны. Например, 12 и 5, в десятичной системе счисления они не равны, но 12 в 3-чной системе счисления и 5 в 6-чной или десятичной системе счисления равны между собой.

Input

Вводятся два числа M и N ( которые в десятичной системе не превышают 1000000000), системы счисления находятся в диапазоне 2~36. Для чисел меньше 10 использовать цифры 0~9, для чисел больше 10 использовать заглавные буквы A~Z.

Output

Вывести в каких системах счисления M и N равны. Если равны, вывести соответствующий результат (если результатов несколько, вывести тот результат, в котором система счисления наименьшая), если не равны, вывести ошибку.

Например, Input:
12 5↵

Output:
12 (base 3) = 5 (base 6)↵

Мой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
#define MAXLINE 1000
 
char *itob(int n, char *s, int b)
{
    int i, sign;
    static char digits[] = "0123456789abcdefghijklmnopqrstuvwxyz";
    char *reverse(char *s);
 
    sign = n;
    i = 0;
    do {     
        s[i++] = digits[ abs(n % b) ];
    } while ((n /= b) != 0);    
    if (sign < 0)
        s[i++] = '-';
    s[i] = '\0';
    return reverse(s);
}
 
char *reverse(char *s)
{
    int c, i, j;
 
    for (i = 0, j = strlen(s)-1; i < j; i++, j--)
        c = s[i], s[i] = s[j], s[j] = c;
    return s;
}
 
int main() {  
  
  char s[MAXLINE];
  int m, n;
 
  scanf("%d %d", &m, &n);
  printf("%s\n", itob(m, s, 3)); // preobrazovat m iz 10 sistemi v 3 sistemu
  printf("%s\n", itob(n, s, 6)); // preobrazovat n iz 10 sistemi v 6 sistemu
 
  printf("\n");
  system("PAUSE");
  return 0;  
}
в этом коде цифра в 10 системе преобразуется в другую систему, а как сделать наоборот, цифру из другой системы преобразовать обратно в 10 систему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2012, 10:38     Задача: конвертация из одной системы счисления в другую
Посмотрите здесь:

C++ Перевод из одной системы счисления в другую
Перевод из одной системы счисления в другую C++
Перевод из одной системы счисления в другую. C++
C++ перевод из одной системы счисления в другую
C++ Перевод из одной системы счисления в другую
C++ Перевод из одной системы счисления в другую
перевод из одной системы счисления в другую C++
Перевод из одной системы счисления в другую от 2 до 36 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru