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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.76
Abuka
0 / 0 / 0
Регистрация: 16.06.2010
Сообщений: 35
22.09.2010, 13:14     Перевод числа в строку #1
Подскажите пожалуйста:
1) Каким образом переводится число в строку
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
#include <iostream.h>
#include <string.h>
void main()
{
char s[128];
int i,d,p;
long int n;
 
cout<<"Введите число:";
cin>>n;*
int k=0;
while (n>0)
{
for (p=5,p<=7,p++)
d=n%p; 
s[k]=d+'0'; 
n=n/p; 
k++;
}
if (k==0)
{
s[0]='0';
}
for (i=k-1;i>=0;i--)
cout<<s[i];
cout<<'\n';
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
22.09.2010, 13:31     Перевод числа в строку #2
Цитата Сообщение от Abuka Посмотреть сообщение
Каким образом переводится число в строку
C++
1
itoa()
Добавлено через 1 минуту
Цитата Сообщение от Abuka Посмотреть сообщение
Как записывается число начиная с последнего символа(задом на перед)
C++
1
2
3
4
int x = 1234;
//цикл
int b = b * 10 +(x % 10);
x /=10;
Добавлено через 2 минуты
перевод int в string:
C++
1
2
3
4
5
6
std::string toString(int val)
{ 
    std::ostringstream oss;
    oss<< val;
    return oss.str();
}
LineStown
 Аватар для LineStown
63 / 63 / 3
Регистрация: 04.08.2010
Сообщений: 399
22.09.2010, 13:32     Перевод числа в строку #3
По поводу систем счисленея.
Как то делал вот такую задачу, может пригодится.
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
//Написать функцию, которая получает в качестве аргументов целое положительное число и систему
//счисления, в которую это число должно переводится (системы счисления от 3 до 36). 
//Например, при переводе числа 27 в систему счисления 16 должно получиться 1B; 13 в 5-ю - 23; 35 в 18-ю - 1H. 
#include<iostream>
using namespace std;
void print(int n,int s);
int main()
{
    setlocale(LC_ALL,"Russian");
    int a,b;
    cout << "Введите десятичное число: ";
    cin >> a;
    cout << "Введите систему исчислениея(3-36): ";
    cin >> b;
    if((b>=3)&&(b<=36))print(a,b);
    else cout << "Система исчисления не верная\n";
    return EXIT_SUCCESS;
}
void print(int n,int s)
{
    int t1=0;
    while(n>=s)
    {
        n-=s;
        t1++;
        if(t1==s)
        {
            t1=0;
            if(s<10)cout << s-1;
            else cout << char((s-10)+65);
        }
    }
    if(t1!=0)
        if(t1<10)cout << t1;
        else cout << char((t1-10)+65);
    if(n<10)cout << n;
    else cout << char((n-10)+65);
    cout << endl;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
22.09.2010, 14:30     Перевод числа в строку #4
LineStown, тогда уж вот так:
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
#include <stdio.h>
 
char *reverse(char *str, int len) {
    char *end = str + len - 1;
    char *start = str;
    char ch = 0;
    
    for( ; start < end; ++start, --end) {
        ch = *start;
        *start = *end;
        *end = ch;
    }
    
    return str;
}
 
char *itoa(char *buf, int val, int base) {
    char *p = buf;
    int len = 0;
    
    for(; val; val /= base, ++len)
        *buf++ = "0123456789abcdefg"[val%base];
           
    reverse(p, len);
    buf[len] = '\0';
    
    return p;
}
 
int main()
{
    char buf[16];
    printf("%s\n", itoa(buf, 332, 16));
}
Увеличивая количество символов в массиве "0123456789abcdefg" увеличиваем максимально возможную систему счисления.
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
22.09.2010, 15:37     Перевод числа в строку #5
Цитата Сообщение от Abuka Посмотреть сообщение
1) Каким образом переводится число в строку
2) Как записывается число начиная с последнего символа(задом на перед)
Решение с помощью std::reverse и boost::lexical_cast:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <algorithm>
#include <string>
#include <boost/lexical_cast.hpp>
 
// ...
std::string sn = boost::lexical_cast<std::string>(123456);
 
std::reverse(sn.begin(), sn.end());
 
int rn = boost::lexical_cast<int>(sn);
// ...
Yandex
Объявления
22.09.2010, 15:37     Перевод числа в строку
Ответ Создать тему
Опции темы

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