С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
#1

Функция: перевод числа из 10-ной в 16-ную систему счисления - C++

15.12.2008, 00:59. Просмотров 1072. Ответов 8
Метки нет (Все метки)

Напишите функцию, которая переводит заданное число из 10-ной системы
счисления в 16-ричную систему счисления
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2008, 00:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция: перевод числа из 10-ной в 16-ную систему счисления (C++):

Перевод числа из 10-ной в 2-ную систему счисления - C++
помогите пожалуйста. я ввожу число он выдает двоичную систему счисления (например 100101 и затем нули, после числа бесконечно) вот так:...

Перевод из 16-ной 10-ную систему счисления - C++
Народ помагите кто-нибудь написать програму на языке СИ для перевода числа из 16-ной в 10-ную систему счисления.Плиз оч прошу.)) ...

Перевод из 8-ной в 10-ную систему счисления - C++
#include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; int main() {{char S; int...

Перевод строки из 2-ной системы счисления в 8-ную систему счисления - C++
помогите пожалуйста как сделать перевод строки из 2 системы счисления на 8 систему счисления через массив ?

Перевод из 2-ной в 8-ную систему счисления и обратно - C++
помогите написать код, как перевести число из 2 в 8 систему счисления и обратно?

Из 2-ной в 10-ную систему - C++
Привет всем тем кто не пошел в школу или сидит на работе в интернете :) Есть код. Нужно из двоичного числа ( а и b ) сделать десятичное (...

8
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
15.12.2008, 02:19 #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
/* переводит число из 10-ной в 16-ричную систему */
main()
{
    char *dectohex(long);
    
    printf("%s\n", dectohex(4000000000));
    return 0;
}
 
#define MAXNUMBER  100
 
/* dectohex:  переводит число из 10-ной системы счисления в 16-ричную */
char *dectohex(long n)
{
    static char number[MAXNUMBER];
    
    return sprintf(number, "%lx", n) > 0 ? number : NULL;
}
update:
заменил %x на %lx, терь правильно и на bc3.1
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
15.12.2008, 07:48  [ТС] #3
Dev-C++ не запускает
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
15.12.2008, 22:35  [ТС] #4
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
#include <stdio.h>
#include <stdlib.h>
 
int hex(int n) //ввод шестнадцатиричной переменной
 
{ int i=0;
char str[255]="";
while(n!=0) //пока n не равен нулю
{
str[255]=n%16; //делим число 
i++; //инкрементируем
n/=16; // делим число на 16 до целого
}
for(i--;i>=0;i--)
return(str[255]);
}
 
int main()
{
char *v=NULL; //s - динамический массив
int n; //a-десятиричное число
v=(char*)malloc(sizeof(int)*50); //выделяем память под динамический массив
printf("Vvedite chislo v desyatichnoy sisteme schisleniya\n"); // вывод сообщения
scanf("%d",n); // ввод десятиричного числа
*v=hex(n); 
printf("%s",*v); // вывод ответа
printf("\n"); 
system("pause");//ждем нажатия любой клавиши
return 0;//завершение программы
}
А как будет выгледеть нормальный код? В принципе я написал, но блин что-то неверно. и не получаеться исправить
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
15.12.2008, 23:16 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int hex(int n) //ввод шестнадцатиричной переменной
 
{ int i=0;
char str[255]="";
while(n!=0) //пока n не равен нулю
{
str[255]=n%16; //делим число
i++; //инкрементируем
n/=16; // делим число на 16 до целого
}
for(i--;i>=0;i--)
return(str[255]);
}
это выбрось

те нужен алгоритм перевода обязательно? я обёртку написал, т.к. она переносимая и простая
0
Spo1ler
292 / 52 / 3
Регистрация: 22.05.2008
Сообщений: 788
16.12.2008, 00:25 #6
Если можно на си++, то вот навскидку решение
Код
#include <iostream>
int main(){
    std::cout << "Enter decimal number: ";
    int num;
    std::cin >> num;
    std::cout << "In hexadecimal: " << std::hex << num << std::endl;
    return 0;
}
Если я под ночь ничего не напутал, то должно работать.
0
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
16.12.2008, 00:46  [ТС] #7
Через стандартные функцию я тоже умею писать. Мне именно надо через функцию притом не стандартную. Ну все равно спасибо и за эту прогу
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
17.12.2008, 00:38 #8
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 <ctype.h>
#include <stdlib.h>
 
#define MAXNUMBER  100    /* максимальная длина числа */
 
/* переводит число из 10-ной в 16-ричную систему */
main()
{
    int dectohex(char *);
    char number[MAXNUMBER];
    
    sprintf(number, "125");
    if (dectohex(number) == 0)
        printf("%s\n", number);
    return 0;
}
 
//#include <ctype.h>
//#include <stdlib.h>
 
/* dectohex:  переводит число из 10-ной системы счисления в 16-ричную;
              число >0 и <2^31 */
int dectohex(char *s)
{
    char *p = s;
    long n, i;
    
    while (isdigit(*p))
        p++;
    if (*p != '\0')
        return 1;
    if ((n = atoi(s)) == 0) {    
        *s = '0';
        *(s+1) = '\0';
        return 0;
    }    
    for (i = n, p = s; i; p++, i >>= 4)
        ;
    *p = '\0';
    for (p-- ; n; n >>= 4, p--) {
        i = (n & 0xF);
        *p = (i < 10 ? '0' + i : 'A' + (i-10));
    }
    return 0;
}
через сдвиги, там ограничения на размер и зависимость от таблицы кодов символов (может быть не переносима между разными системами), сообщает об ошибке (если передаётся не десятичное положительное число)
т.к. надо возвращать 16ричное число, строка нужна обязательно (лучше бы вообще не использовать строки когда с числами работаешь)
алгоритм через деление может увеличить максимально допустимый размер числа, я пробовал через double нифига чо-то не получилось для сдвигов (пишет нелья такие операции применять к double оно и ясно там же вещественная часть вычисляется)
1
ElemeNT
1 / 1 / 0
Регистрация: 27.10.2008
Сообщений: 25
17.12.2008, 16:29  [ТС] #9
странная прога щас буду ковыряться
0
17.12.2008, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2008, 16:29
Привет! Вот еще темы с ответами:

Программа для перевода данного натурального числа в N-ную систему счисления - C++
у меня к вам нестандартная просьба... вот готовый код. Можете коротко расписать объяснения к каждой строке(строки ввода, вывода и...

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

Перевод натурального числа из десятичной системы счисления в систему счисления по основанию - C++
Здравствуйте. Я хотела бы попросить у вас помощи. Я понимаю, что это не очень красиво, но вдруг кто-нибудь откликнется. Я не очень...

Перевод числа в другую систему счисления - C++
Напишите функцию, которая принимает длинное целое беззнаковое число, интерпретирует его как двоичное (т.е. число содержит только 0 и 1) и...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.