Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/48: Рейтинг темы: голосов - 48, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
1

Перевести в 16 ричную систему счисления

26.12.2011, 18:10. Показов 8745. Ответов 31
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать программу перевода из 8 ричной системы счисления в шестнадцатирничную

в интернете нашел программу переводящую из 10 в 16 , а мне надо чтобы из 8 ричной в 16 ричную , помогите кто может

Pascal
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
program algoritm;
uses crt;
var i,ost,des,n,l:integer;
s,s1,sbox:string;
begin
{Алгоритм перевода}
 Writeln('Введите десятичное число:');
 read(des);
 n:=0;
 i:=0;
 s:='';
 repeat
  inc(n);
  inc(i);
  ost:=des mod 16;//остаток
  des:=des div 16;//целая часть
  if ost>=10 then
   begin
    if ost=10 then s:=s+'A';
    if ost=11 then s:=s+'B';
    if ost=12 then s:=s+'C';
    if ost=13 then s:=s+'D';
    if ost=14 then s:=s+'E';
    if ost=15 then s:=s+'F';
   end
  else
   begin
    s:=s+IntToStr(ost);
   end;
 until des=0;
{Переворачиваем содержимое}
n:=1;
l:=length(s);
for i:=1 to (l div 2) do
 begin
 sbox:=s[n];
 s[n]:=s[l+1-n];
 s[l+1-n]:=sbox[1];
 inc(n);
 end;
writeln('Шестнадцатиричное число: ',s);
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2011, 18:10
Ответы с готовыми решениями:

Простейший алгоритм перевода числа из 10 системы счисления в 16 ричную систему счисления
Помогите написать самый простой алгоритм перевода из 10 системы счисления в 16 ричную систему...

Перевод в 12-ричную систему счисления
помогите , подскажите как правильно перевести

Реализовать перевод в 16-ричную систему счисления
Как реализовать такой же перевод,но в 16-ричную с.с? void OctalInt::ConvertToVector() { int...

Перевод из 10-тичной в 16-ричную систему счисления
Как перевести из 10 в 16 систему, каким-нибудь простым способом?

31
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 16:45 21
Author24 — интернет-сервис помощи студентам
Прототип. Не проверяет корректность ввода, разделяющий элемент - точка.
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <string>
#include <algorithm>
 
int symbol2int(char symbol)
{
    if((symbol >= '0') && (symbol <= '9'))
        return 0 + static_cast<int>(symbol) - static_cast<int>('0');
    else if((symbol >= 'A') && (symbol <= 'F'))
        return 10 + static_cast<int>(symbol) - static_cast<int>('A');
    else if((symbol >= 'a') && (symbol <= 'f'))
        return 10 + static_cast<int>(symbol) - static_cast<int>('a');
    else 
        return 0;
}
 
char int2symbol(int num)
{
    if(num < 10)
        return '0' + num;
    else
        return 'a' + num - 10;
}
 
char periodBin2hexSymbol(std::string period)
{
    int num = 0, count = 0;
    for(std::string::iterator it = period.end() - 1; count < 4; ++count, --it)
        num += (*it - '0') << count;
    return int2symbol(num);
}
    
std::string oct2bin(std::string oct)
{
    std::string bin;
    for(std::string::iterator it = oct.begin(); it != oct.end(); ++it)
    {
        std::string per;
        int num = symbol2int(*it);
        for(int count = 0; count < 3; ++count, num >>= 1)
            per = static_cast<char>((num & 1) + '0') + per;
        bin = bin + per;
    }
    size_t it = bin.find('1');
    if(static_cast<int>(it) != 0)
        bin.erase(0, it);
    return bin;
}
 
std::string& beginBinCorrection(std::string &bin, int period)
{
    while(bin.length() % period)
        bin = '0' + bin;
    return bin;
}
 
std::string& endBinCorrection(std::string &bin, int period)
{
    while(bin.length() % period)
        bin = bin + '0';
    return bin;
}
 
std::string bin2hex(std::string bin)
{
    beginBinCorrection(bin, 4);
    std::string hex;
    for(std::string::iterator it = bin.begin(); it != bin.end(); it += 4)
    {
        std::string period;
        period.insert(0, bin, (it - bin.begin()), 4);
        hex = hex + periodBin2hexSymbol(period);
    }
    return hex;
}
    
std::string oct2hex(std::string oct)
{
    size_t posPoint = oct.find('.');
    
    if(posPoint == std::string::npos)
        return bin2hex(oct2bin(oct));
        
    std::string beforePoint;
    std::string afterPoint;
    
    beforePoint.insert(0, oct, 0, posPoint);
    afterPoint.insert(0, oct, posPoint + 1, oct.size() - posPoint - 1);
    afterPoint = oct2bin(afterPoint);
    beginBinCorrection(afterPoint, 3);
    endBinCorrection(afterPoint, 4);
    afterPoint = bin2hex(afterPoint);
    
    return bin2hex(oct2bin(beforePoint)) + '.' + afterPoint;
}
 
int main()
{
    std::string oct;
    std::cin >> oct;
    std::cout << oct2hex(oct) << std::endl;
 
    return 0;
}
2
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 16:57  [ТС] 22
Спасибо большое ! столько писали ) но я запустил ее , окно открывается я ввожу и оно закрывается (
как это исправить
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:03 23
Как и предыдущую, добавить cstdlib и в функции main перед return 0 прописать system("pause");
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:13  [ТС] 24
систем пауз написал а cstdlib куда добавить

Добавлено через 4 минуты
добавить то добавил но около систем пауз останавливается и усе ( ошибку дает
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:14 25
C++
1
#include <cstdlib>
В самое начало

Добавлено через 1 минуту
Такой
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <cstdlib>
#include <iostream>
#include <string>
#include <algorithm>
 
int symbol2int(char symbol)
{
    if((symbol >= '0') && (symbol <= '9'))
        return 0 + static_cast<int>(symbol) - static_cast<int>('0');
    else if((symbol >= 'A') && (symbol <= 'F'))
        return 10 + static_cast<int>(symbol) - static_cast<int>('A');
    else if((symbol >= 'a') && (symbol <= 'f'))
        return 10 + static_cast<int>(symbol) - static_cast<int>('a');
    else 
        return 0;
}
 
char int2symbol(int num)
{
    if(num < 10)
        return '0' + num;
    else
        return 'a' + num - 10;
}
 
char periodBin2hexSymbol(std::string period)
{
    int num = 0, count = 0;
    for(std::string::iterator it = period.end() - 1; count < 4; ++count, --it)
        num += (*it - '0') << count;
    return int2symbol(num);
}
    
std::string oct2bin(std::string oct)
{
    std::string bin;
    for(std::string::iterator it = oct.begin(); it != oct.end(); ++it)
    {
        std::string per;
        int num = symbol2int(*it);
        for(int count = 0; count < 3; ++count, num >>= 1)
            per = static_cast<char>((num & 1) + '0') + per;
        bin = bin + per;
    }
    size_t it = bin.find('1');
    if(static_cast<int>(it) != 0)
        bin.erase(0, it);
    return bin;
}
 
std::string& beginBinCorrection(std::string &bin, int period)
{
    while(bin.length() % period)
        bin = '0' + bin;
    return bin;
}
 
std::string& endBinCorrection(std::string &bin, int period)
{
    while(bin.length() % period)
        bin = bin + '0';
    return bin;
}
 
std::string bin2hex(std::string bin)
{
    beginBinCorrection(bin, 4);
    std::string hex;
    for(std::string::iterator it = bin.begin(); it != bin.end(); it += 4)
    {
        std::string period;
        period.insert(0, bin, (it - bin.begin()), 4);
        hex = hex + periodBin2hexSymbol(period);
    }
    return hex;
}
    
std::string oct2hex(std::string oct)
{
    size_t posPoint = oct.find('.');
    
    if(posPoint == std::string::npos)
        return bin2hex(oct2bin(oct));
        
    std::string beforePoint;
    std::string afterPoint;
    
    beforePoint.insert(0, oct, 0, posPoint);
    afterPoint.insert(0, oct, posPoint + 1, oct.size() - posPoint - 1);
    afterPoint = oct2bin(afterPoint);
    beginBinCorrection(afterPoint, 3);
    endBinCorrection(afterPoint, 4);
    afterPoint = bin2hex(afterPoint);
    
    return bin2hex(oct2bin(beforePoint)) + '.' + afterPoint;
}
 
int main()
{
    std::string oct;
    std::cin >> oct;
    std::cout << oct2hex(oct) << std::endl;
    system("pause");
 
    return 0;
}
останавливается?
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:23  [ТС] 26
да ввожу что нибудь и все консольная строка исчезает (
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:26 27
колянчик1712, что именно вы вводите?
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:28  [ТС] 28
числа

Добавлено через 1 минуту
а в последнем варианте который вы присылали программа останавливается на system("pause"); и выдает ошибку
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:30 29
колянчик1712, еще раз. Какие. Числа. Вы. Вводите.?
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:32  [ТС] 30
любые хоть простые , хоть дробные
0
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:34 31
колянчик1712, число напишите сюда, какое вы вводите.
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:37  [ТС] 32
да я ввожу любое число и программа вылетает
0
27.12.2011, 17:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2011, 17:37
Помогаю со студенческими работами здесь

Преобразование чисел в 15-ричную систему счисления
Помогите пожалуйста написать код для перевода с 10-тичной в 15-тиричную систему счисления на языке...

Перевод числа из двоичной в 16-ричную систему счисления
Ввод целого числа в двоичной системе счисления, т.е. последовательность цифр 0 и 1. Составить...

Перевести число с 10 ичной системы счисления в 8 ричную
Дана задача составить программу: Которая будет выполнять одно действие деление чисел в...

Перевести число из 4-ричной системы счисления в 18-ричную и наоборот
Перевести число из 4-ричной системы счисления в 18-ричную и наоборот


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru