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

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

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

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

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

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

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

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

Перевод числа в строку - C++
составить строковую функцию num_to_str(n) где n целое число ( |n|<1000). возвращаемое значение должно быть строкой в которой число n...

Перевод из числа в строку - C++
Решил написать простую программу,переводящую число int-е в массив символов. Проблема в том,что когда мы вызываем ее так,что число...

Перевод из числа в строку - C++
Доброго времени суток, уважаемые! Интересует такой вопрос: есть ли в языке C++ оператор перевода из числа в строку. Раньше изучал...

Перевод из числа в строку - C++
Подскажите, пожалуйста, как мне число 1 записать в строку как символ "1"?

Перевод вещественного числа в строку! - C++
вообщем проблема такова!делаю программу для определения скорости мыши,после того как сделал кое какие обработки событий получается...

4
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;
}
1
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();
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,813
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));
}
0
rkiller
0 / 0 / 0
Регистрация: 15.11.2009
Сообщений: 18
22.11.2009, 22:08  [ТС] #5
Мне бы лучше использовалось cout.put('A'+r-10) для преобразования в буквы
0
22.11.2009, 22:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2009, 22:08
Привет! Вот еще темы с ответами:

Перевод числа в строку и обратно - C++
Какие есть ф-ции для перевода числа в строку и обратно? и можно-ли их будет записывать через getline() ? Например строка hello45who не...

Перевод строки в число и числа в строку - C++
Здравствуйте, нужен алгоритм перевода числа в строку и обратно или библиотека , хочу написать перевод десятичного числа в двоичное, спасибо

Перевод целого десятичного числа в строку и обратно в десятичное число - C++
перевод целого десятичного числа в строку и обратно в десятичное число, результат вывести в 3 столбика и 20 строк. заранее спасибо)

itoa. перевод числа в строку. реализуем вырезанную из стандарта функцию))) - C++
доброе утор, день, вечер. нужна реализация itoa, у меня получилось следующее char ito(int value) { int tmp_value = value; ...


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

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

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