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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 93, средняя оценка - 4.88
Xin4
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 10
#1

Перевод int в символьный массив char - C++

24.05.2009, 21:39. Просмотров 12556. Ответов 15
Метки нет (Все метки)

Помогите плз реализовать алгоритм перевода целого числа в символьный массив..
К примеру:
дано число
int a=1234;
нужно чтобы в массиве
char b[4] было:
b[0]=1, b[1]=2, b[2]=3, b[3]=4, итд..
число a - произвольное, но четырехкратное)
был бы благодарен за помощь))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2009, 21:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перевод int в символьный массив char (C++):

Массив char + перевод в int - C++
Нужно создать цикл в котором при вводе с клавиатуры символа в 16ричной системе (0-F) это число: 1. Переводилось в 10-ю систему счисления,...

Перевод char массива в int массив - C++
Делаю так: int inmas; char outmas; fgets(outmas,40,write); outmas2=atoi(outmas); Пишет что типы несовместимы.

Перевод char в int - C++
Доброго времени суток, форумчане:senor:. Начинаю углубляться с++ вместе с заданием по курсовой:) Проблема: Имеется структура, ...

Перевод *char в int[] c++ - C++
Нужно перевести длинное число которое хранится в виде "+/-324354365654656" в char* в массив int. Нулевой элемент массива знак. Как...

Перевод из char в int - C++
Подскажите пожалуйста! У меня имеется массив символов, то бишь строка. Я хочу преобразовывать каждый символ строки в int. Int k; ...

Перевод из int в char - C++
Пытаюсь перевести число int в строку char. На экран постоянно выводит какие-то иероглифы. Не могли бы вы ОБЪЯСНИТЬ почему так? Код мое...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Pori
1 / 1 / 0
Регистрация: 08.05.2009
Сообщений: 16
24.05.2009, 21:46 #2
C
1
2
3
4
5
6
while (a!=0)
{
b[i]=a%10;
a=a/10;
++i;
}
после этого переворачивай массив и все
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.05.2009, 22:17 #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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
 
using namespace std;
 
// Функция определения порядка числа
// Аргументы:
// num - число для определения порядка
// Возвращаемое значение:
// Порядок числа
int Order(int num)
{
  int order = 0;
 
  while(num){
    num /= 10;
    
    ++order;
  }
 
  return order;
}
 
// Функция перевода положительного целого числа в строку
// Аргументы:
// num - число для перевода
// buffer - строка для записи
// buffer_size - размер строки
// Возвращаемое значение:
// true - если перевод осуществлен успешно
// false - в противном случае
bool ItoA(int num, char* buffer, size_t buffer_size)
{
  int num_order = Order(num);
 
  if(buffer_size < num_order)
    return false;
 
  buffer[num_order] = '\0';
 
  for(int i = num_order; i > 0; --i){
    buffer[i - 1] = '0' + num % 10;
 
    num /= 10;
  }
 
  return true;
}
 
int main()
{
  int num = 0;
 
  cout << "Enter number: ";
  cin >> num;
 
  int num_order = Order(num);
 
  char* str = new char[num_order + 1];
 
  if(ItoA(num, str, num_order + 1))
    cout << str << endl;
  else
    cout << "Error" << endl;
 
  system("pause");
 
  return EXIT_SUCCESS;
}
Таким образом str и будет являться массивом типа char, в котором будет содержаться переведенное число.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
24.05.2009, 22:55 #4
Могу подсказать простое решение

C
1
2
3
4
5
int a; // <-- это число переводим
char b[16]; // <-- сюда записываем результат
sprintf (b, "%d", a);
for (i = 0; i < strlen(b); i++)
  b[i] -= '0';
Xin4
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 10
25.05.2009, 08:58  [ТС] #5
Всем Спасибо!))

Добавлено через 19 минут 39 секунд
Цитата Сообщение от Evg Посмотреть сообщение
Могу подсказать простое решение

C
1
2
3
4
5
int a; // <-- это число переводим
char b[16]; // <-- сюда записываем результат
sprintf (b, "%d", a);
for (i = 0; i < strlen(b); i++)
  b[i] -= '0';
вот только как объявить функции 'sprintf' и 'strlen'?)
пишет нужен прототип этих функций
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.05.2009, 10:07 #6
тут на простых функциях
Вложения
Тип файла: zip insert_digits.zip (565 байт, 151 просмотров)
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
25.05.2009, 11:31 #7
Цитата Сообщение от Xin4 Посмотреть сообщение
Всем Спасибо!))вот только как объявить функции 'sprintf' и 'strlen'?)
пишет нужен прототип этих функций
C
1
2
#include <stdio.h>
#include <string.h>
Но ты должен понимать, что мой вариант - читерский. Он правильный с точки зрения результата, но господа преподаватели могут на него среагировать неадэкватно, потому что они ожидали увидеть другое
Pori
1 / 1 / 0
Регистрация: 08.05.2009
Сообщений: 16
25.05.2009, 20:04 #8
Цитата Сообщение от Evg Посмотреть сообщение
C
1
2
#include <stdio.h>
#include <string.h>
Но ты должен понимать, что мой вариант - читерский. Он правильный с точки зрения результата, но господа преподаватели могут на него среагировать неадэкватно, потому что они ожидали увидеть другое
Да-да. преподаватели обычно требуют разбор так, как я написал выше (со взятием остатка). По крайней мере у нас на первом курсе требовали именно так
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
25.05.2009, 20:31 #9
Цитата Сообщение от Pori Посмотреть сообщение
Да-да. преподаватели обычно требуют разбор так, как я написал выше (со взятием остатка). По крайней мере у нас на первом курсе требовали именно так
Зависит от преподавателя. Если идиот, который научился строить наследование классов и уже считает себя экспертом по Си++ - то такие люди как правило не воспринимают то, чего он они не читали на лекциях. Если нормальный человек, имеющий практический опыт программиста - он сеоркк всего оценит нестандартный подход, упрощающий процесс рещения
firewave
1 / 1 / 0
Регистрация: 04.05.2009
Сообщений: 49
25.05.2009, 22:52 #10
Цитата Сообщение от Xin4 Посмотреть сообщение


вот только как объявить функции 'sprintf' и 'strlen'?)
пишет нужен прототип этих функций
#include<conio.h> для cprintf()
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 15:29 #11
Цитата Сообщение от Evg Посмотреть сообщение
Могу подсказать простое решение

C
1
2
3
4
5
int a; // <-- это число переводим
char b[16]; // <-- сюда записываем результат
sprintf (b, "%d", a);
for (i = 0; i < strlen(b); i++)
  b[i] -= '0';
У меня получается, что это лишнее:
C++
1
2
for (i = 0; i < strlen(b); i++)
  b[i] -= '0';[/c]
Или от компилятора зависит?
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 15:34 #12
alsav22, sprintf и printf идентичны, поэтому цикл не нужен. При выводе чисел (хранимые во внутреннем представлении) функция printf сама преобразует цифры в их коды. sprintf то же самое.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
16.07.2013, 18:11 #13
Цитата Сообщение от alsav22 Посмотреть сообщение
У меня получается, что это лишнее
А ты исходную постановку вопроса читал?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 18:14 #14
Цитата Сообщение от Evg Посмотреть сообщение
А ты исходную постановку вопроса читал?
А ты?
Цитата Сообщение от Xin4 Посмотреть сообщение
перевода целого числа в символьный массив..
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 377
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
16.07.2013, 18:30 #15
Цитата Сообщение от alsav22 Посмотреть сообщение
А ты?
Я читал не только заголовок темы, но и постановку задачи:

Цитата Сообщение от Xin4 Посмотреть сообщение
нужно чтобы в массиве
char b[4] было:
b[0]=1, b[1]=2, b[2]=3, b[3]=4, итд..
Добавлено через 48 секунд
Хотя, начинаю подозревать, что автор попросту кавычки потерял...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2013, 18:30
Привет! Вот еще темы с ответами:

Перевод из char в int - C++
нужно перевести из char в int, способ перевода следующий: &quot;значение цифры равно значению ее символа в таблице символов компьютера...

Перевод char в int - C++
Доброго времени суток. покопался по схожим темам,но так и не нашёл ответа. На вводе с клвиатуры подаётся char-овский массив сстоящийиз...

Перевод int и double в char* - C++
Возникла следующая проблема. Нужно сделать: //Реализовать класс var - «Универсальная переменная». Объекты экземпляры этого класса...

Перевод массива из char в int - C++
есть массив символьного типа. нужно перевести его в тип int для того, что бы далее производить над ним действия уже как с цифрами. как это...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.07.2013, 18:30
Ответ Создать тему
Опции темы

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