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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.63
rkiller
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 18
#1

Перевод числа в строку - C++

22.11.2009, 09:21. Просмотров 3330. Ответов 4
Метки нет (Все метки)

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

Напишите функцию itox (int n, char s[]), которая переводит целое n в строку s, представляющее число n в шестнадцатеричном виде.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2009, 09:21     Перевод числа в строку
Посмотрите здесь:

Бинарные числа! Перевод простого числа в бираное и расчет. C++
C++ Перевод числа в строку
C++ Перевод вещественного числа в строку!
itoa. перевод числа в строку. реализуем вырезанную из стандарта функцию))) C++
C++ Перевод из числа в строку
Перевод целого десятичного числа в строку и обратно в десятичное число C++
Перевод из числа в строку C++
C++ Перевод числа из одной с.с. в другую, манипуляции с цифрами числа
C++ Перевод числа в строку
C++ Перевод строки в число и числа в строку
Перевод числа в строку и обратно C++
Перевод из числа в строку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
22.11.2009, 09:46     Перевод числа в строку #2
при желании лишнии нули можно убрать

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
#include <iostream>
 
//-----------------------------------------------------------------------------
// Функция:     Coding_ASCII
// Описание:    перевод 10го значения в  ASCII код 
// Параметры:   10ое значение
// Значение:        ASCII код
//-----------------------------------------------------------------------------
char Coding_ASCII(int nibble_Dec)
{
    char nibble_ASCII;  
 
    switch(nibble_Dec&0xf)      // перевод символа в ASCII код
    {
    case  0:    nibble_ASCII='0';       break;
    case  1:    nibble_ASCII='1';       break;
    case  2:    nibble_ASCII='2';       break;
    case  3:    nibble_ASCII='3';       break;
    case  4:    nibble_ASCII='4';       break;
    case  5:    nibble_ASCII='5';       break;
    case  6:    nibble_ASCII='6';       break;
    case  7:    nibble_ASCII='7';       break;
    case  8:    nibble_ASCII='8';       break;
    case  9:    nibble_ASCII='9';       break;
    case  10:   nibble_ASCII='A';       break;
    case  11:   nibble_ASCII='B';       break;
    case  12:   nibble_ASCII='C';       break;
    case  13:   nibble_ASCII='D';       break;
    case  14:   nibble_ASCII='E';       break;
    case  15:   nibble_ASCII='F';       break;
    default:    nibble_ASCII='?';
    }
    return nibble_ASCII;
}   // end
 
 
void itox (int n, char s[])
{
    int cnt=0;
    if (n<0)    { s[cnt++]='-'; n=-n;}
 
    s[cnt++]='0';s[cnt++]='x';
 
    for (int i=8; --i>=0;)  s[cnt++]=Coding_ASCII(n>>i*4);
    s[cnt]='\0';
} // end itox
 
int main(void)
{
    const int n=256;
    char s[12];
    itox (n, s);
 
    std::cout<<"n: "<<n<<" s16: "<<s<<std::endl;
    system("PAUSE");
    return 0;
}
rkiller
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 18
22.11.2009, 20:52  [ТС]     Перевод числа в строку #3
программа отличная но слишком продвинутая

а можно без использования функции Coding_ASCII все встроить в itox (int n, char s[])?
а можно как нибудь пристроить код из программы ниже в функции itox

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
#include <iostream.h>
#include <conio.h>
// print: печать val в системе счисления с основанием base
void print(int val, int base = 10)
{
    if(val < 0){ 
        cout.put('-'); 
        print(-val, base);
        }
    if(val / base > 0)              // Если число многозначное
        print(val/base, base);          // печатать старшие цифры
    int r = val % base;         // Остаток от деления
    if(r < 10)
                cout.put('0'+r);
    else
        cout.put('A'+r-10);
    }
void main() {
        print(31); cout.put(' '); // По умолчанию base = 10
        print(31,10); cout.put(' ');
        print(31,16); cout.put(' ');
        print(31,2); cout.put('\n');
        getch();
}
easybudda
Эксперт С++
9440 / 5463 / 925
Регистрация: 25.07.2009
Сообщений: 10,485
22.11.2009, 21:45     Перевод числа в строку #4
rkiller, так не подойдёт?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
int main(){
    int a;
    char str[BUFSIZ];
 
    while ( 1 ) {
        printf("Enter some number (0 for exit): ");
        scanf("%d", &a);
        if ( !a )
            break;
        /* в строку, так в сторку */
        sprintf(str, "0x%X", a);
        printf("%s\n", str);
    }
    
    return 0;
}
Вот ещё из личных запасов
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
/* revstr - строка наоборот */
char *revstr(char *s){
        char *h, *t, c;
        if ( !s || !(*s) )
            return NULL;
        h = s; /* head */
        t = h + strlen(s) - 1; /* tail */
        
        while ( h < t ){
                c = *h;
                *h = *t;
                *t = c;
                h++;
                t--;
        }
        
        return(s);
}
 
/* возвращает в buf строку не длиннее len - 1 символов, представляющую число val в CC с основанием base, или NULL при неудаче */
char *itoan(char *buf, int len, unsigned int val, int base){
        static char num[] = "0123456789abcdefghijklmnopqrstuvwxyz";
        char *str = buf;
 
        if ( (base < 2) || (base > 36) )
                return(NULL);
        
        while ( val ){
                if ( --len < 1 )
                        return(NULL);
                *buf++ = num[val % base];
                val /= base;
        }
        *buf = '\0';
        return(revstr(str));
}
rkiller
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 18
22.11.2009, 22:08  [ТС]     Перевод числа в строку #5
Мне бы лучше использовалось cout.put('A'+r-10) для преобразования в буквы
Yandex
Объявления
22.11.2009, 22:08     Перевод числа в строку
Ответ Создать тему
Опции темы

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