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

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

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

Студворк — интернет-сервис помощи студентам
Помогите написать программу перевода из 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.12.2011, 18:10
Ответы с готовыми решениями:

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

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

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

31
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 16:45
Студворк — интернет-сервис помощи студентам
Прототип. Не проверяет корректность ввода, разделяющий элемент - точка.
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  [ТС]
Спасибо большое ! столько писали ) но я запустил ее , окно открывается я ввожу и оно закрывается (
как это исправить
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:03
Как и предыдущую, добавить cstdlib и в функции main перед return 0 прописать system("pause");
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:13  [ТС]
систем пауз написал а cstdlib куда добавить

Добавлено через 4 минуты
добавить то добавил но около систем пауз останавливается и усе ( ошибку дает
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:14
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  [ТС]
да ввожу что нибудь и все консольная строка исчезает (
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:26
колянчик1712, что именно вы вводите?
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:28  [ТС]
числа

Добавлено через 1 минуту
а в последнем варианте который вы присылали программа останавливается на system("pause"); и выдает ошибку
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:30
колянчик1712, еще раз. Какие. Числа. Вы. Вводите.?
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:32  [ТС]
любые хоть простые , хоть дробные
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
27.12.2011, 17:34
колянчик1712, число напишите сюда, какое вы вводите.
1
0 / 0 / 0
Регистрация: 25.12.2011
Сообщений: 41
27.12.2011, 17:37  [ТС]
да я ввожу любое число и программа вылетает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2011, 17:37

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru