Онлайн перевод дробных чисел из десятичной системы счисления
Введите число:
Введите основание системы счисления:
Подробно о переводе чисел из одной системы счисления в другую рассмотрено в этой статье.
Реализация на 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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
// Отображение шестнадцатеричной цифры
char digit(int num)
{
switch (num) {
case 0: return '0';
case 1: return '1';
case 2: return '2';
case 3: return '3';
case 4: return '4';
case 5: return '5';
case 6: return '6';
case 7: return '7';
case 8: return '8';
case 9: return '9';
case 10: return 'A';
case 11: return 'B';
case 12: return 'C';
case 13: return 'D';
case 14: return 'E';
case 15: return 'F';
}
}
// Получение целой части числа
int dectox_int(int a, int p, char* s)
{
int num = (int)a;
int rest = num % p;
num /= p;
if (num == 0)
{
s[0] = digit(rest); return 1;
}
int k = dectox_int(num, p, s);
s[k++] = digit(rest);
return k;
}
// Получение дробной части числа
void dectox_double(double a, int p, char* s)
{
int iter = 0;
int k = 0;
double a1 = a;
do {
a1 = a1 * p;
int num = (int)(a1);
s[k++] = digit(num);
a1 -= (int)a1;
iter++;
} while (a1 > 0.00000001 && iter < 10);
s[k] = '\0';
}
int main()
{
double a;
char s[80] = { 0 };
int p;
system("chcp 1251");
system("cls");
cout << "Введите число: ";
cin >> a;
cout << "Введите основание системы счисления: ";
cin >> p;
int k = dectox_int((int)a, p, s);
s[k++] = ',';
dectox_double(a - (int)a, p, &s[k]);
cout << s;
cin.get(); cin.get();
return 0;
}
Результат выполнения
Ошибка:
68:3: error: stray '\342' in program
68:3: error: stray '\200' in program
68:3: error: stray '\224' in program
In function 'int main()':
68:24: error: expected primary-expression before 'int'
68:27: error: 'a' cannot be used as a function
In function 'char digit(int)':
25:1: warning: control reaches end of non-void function [-Wreturn-type]
Что делать..?
Как минимум, посмотреть код
Простите, пожалуйста. Но у меня не получается на подобии вашей программы составить свою, которая бы переводила дробную часть. (Тестировал вашу программу, она вместо дробной части выводит 0) подскажите, пожалуйста, что делать
Можно код Вашей программы увидеть?