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

перевод из 10сс в 16сс - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
Nick888
Сообщений: n/a
07.03.2010, 11:03     перевод из 10сс в 16сс #1
Всем привет!) Подкиньте пожалуйста прогу перевода из 10сс в 16сс, где
функция находит в строке десятичные константы и заменяет их на шестнадцатеричные с тем же значением, например "aaaaa258xxx" на "aaaaa0x102xxx".
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 11:03     перевод из 10сс в 16сс
Посмотрите здесь:

Перевод из 10СС в 2,8,16СС. C++
Перевод из 10СС C++
Программа для перевода чисел из 10сс в 2сс C++
Перевод из 2сс в 10сс C++
Перевод из 16 сс в 4 сс C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.03.2010, 15:39     перевод из 10сс в 16сс #2
есть какие то наработки?
Nick888
Сообщений: n/a
09.03.2010, 17:07     перевод из 10сс в 16сс #3
Есть парочка, завтра приду домой выложу. Работает, но только глючно, переводит все символы, в том числе и буквы, что как раз и не надо, цифры переводит, но не правильно.

Добавлено через 13 часов 19 минут
Собственно вот:


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
#include <iostream>
using namespace std;
#include <stdio.h>
 
void find(int s[],int B[]) 
{int i,n,m=0,j,a;
for (i=0; s[i]!=0; i++) //цикл просматривает массив
{ if (s[i]>='0' && s[i]<='9') 
{ 
n = s[i];
B[m++]=' ';
for (int nn=n; nn!=0; m++, nn/=16); //Подсчет количества цифр числа
for (j=m-1; n!=0; j--, n/=16) // Получение цифр числа
{
a=n%16; //получение цифр в обратном порядке
if(a<10) B[j]=a+'0'; //Перевод в 16СС до 10
else B[j]=a-10+'A'; //Перевод в 16СС от 10 
}
n=0; B[m++]=' ';
}
else B[m++]=s[i];  
}
B[m++]=0;} 
 
void main(){
    int s[];
    gets (s);
    int B[100];
    find(s, B);
    printf("%s\n", B);
} //вывод обновлённого символьного массива
Добавлено через 10 секунд

Добавлено через 10 часов 14 минут
Гляньте пожалуйста, может найдёте мои ошибки.

Добавлено через 20 часов 54 минуты
Вот исправленный вариант, проблема только в одном, он считает каждый символ, т.е. 258 и разбивает на 2, 5, 8 и считает, а надо что бы считал, как 258.
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
#include <iostream>
using namespace std;
#include <stdio.h>
 
void find(char s[],char B[]) 
{int i,n,m=0,j,a;
for (i=0; s[i]!=0; i++) //цикл просматривает массив
{ if (s[i]>='0' && s[i]<='9') 
{ 
n = s[i];
B[m++]=' ';
B[m++]='0';
B[m++]='x';
for (int nn=n; nn!=0; m++, nn/=16); //Подсчет количества цифр числа
for (j=m-1; n!=0; j--, n/=16) // Получение цифр числа
{
a=n%16; //получение цифр в обратном порядке
if(a<10) B[j]=a+'0'; //Перевод в 16СС до 10
else B[j]=a-10+'A'; //Перевод в 16СС от 10 
}
n=0; B[m++]=' ';
}
else B[m++]=s[i];  
}
B[m++]=0;} 
 
void main(){
    char s[100];
    gets (s);
    char B[100];
    find(s, B);
    printf("%s\n", B);
} //вывод обновлённого символьного массива
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
09.03.2010, 17:30     перевод из 10сс в 16сс #4
Стоп. Давай начнём с подсчёта количества цифр числа что-то оно мне не нравится.

C++
1
2
[FONT=monospace]for (int nn=n; nn!=0; m++, nn/=16);
[/FONT]
Объясни мне какая переменная будет вмещать это значение? Переменная mm не может, по-моему, это просто счётсик. Тем более, на этот момент он уже равен 3

Далее, в нашем примере переменная n равна 50. Ты пишешь nn= n, следовательно, приравниваешь nn к 50. Зачем? Для чего? В общем, подробно по этому участку кода.
Yandex
Объявления
09.03.2010, 17:30     перевод из 10сс в 16сс
Ответ Создать тему
Опции темы

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