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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 93, средняя оценка - 4.88
Xin4
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 10
24.05.2009, 21:39     Перевод int в символьный массив char #1
Помогите плз реализовать алгоритм перевода целого числа в символьный массив..
К примеру:
дано число
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++ Перевод из int в char
C++ Перевод char массива в int массив
перевод из char в int C++
C++ Массив char + перевод в int
Перевод из char в int C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pori
1 / 1 / 0
Регистрация: 08.05.2009
Сообщений: 16
24.05.2009, 21:46     Перевод int в символьный массив char #2
C
1
2
3
4
5
6
while (a!=0)
{
b[i]=a%10;
a=a/10;
++i;
}
после этого переворачивай массив и все
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
24.05.2009, 22:17     Перевод int в символьный массив char #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
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
24.05.2009, 22:55     Перевод int в символьный массив char #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  [ТС]     Перевод int в символьный массив char #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
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.05.2009, 10:07     Перевод int в символьный массив char #6
тут на простых функциях
Вложения
Тип файла: zip insert_digits.zip (565 байт, 146 просмотров)
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
25.05.2009, 11:31     Перевод int в символьный массив char #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     Перевод int в символьный массив char #8
Цитата Сообщение от Evg Посмотреть сообщение
C
1
2
#include <stdio.h>
#include <string.h>
Но ты должен понимать, что мой вариант - читерский. Он правильный с точки зрения результата, но господа преподаватели могут на него среагировать неадэкватно, потому что они ожидали увидеть другое
Да-да. преподаватели обычно требуют разбор так, как я написал выше (со взятием остатка). По крайней мере у нас на первом курсе требовали именно так
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
25.05.2009, 20:31     Перевод int в символьный массив char #9
Цитата Сообщение от Pori Посмотреть сообщение
Да-да. преподаватели обычно требуют разбор так, как я написал выше (со взятием остатка). По крайней мере у нас на первом курсе требовали именно так
Зависит от преподавателя. Если идиот, который научился строить наследование классов и уже считает себя экспертом по Си++ - то такие люди как правило не воспринимают то, чего он они не читали на лекциях. Если нормальный человек, имеющий практический опыт программиста - он сеоркк всего оценит нестандартный подход, упрощающий процесс рещения
firewave
 Аватар для firewave
1 / 1 / 0
Регистрация: 04.05.2009
Сообщений: 49
25.05.2009, 22:52     Перевод int в символьный массив char #10
Цитата Сообщение от Xin4 Посмотреть сообщение


вот только как объявить функции 'sprintf' и 'strlen'?)
пишет нужен прототип этих функций
#include<conio.h> для cprintf()
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 15:29     Перевод int в символьный массив char #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++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
16.07.2013, 15:34     Перевод int в символьный массив char #12
alsav22, sprintf и printf идентичны, поэтому цикл не нужен. При выводе чисел (хранимые во внутреннем представлении) функция printf сама преобразует цифры в их коды. sprintf то же самое.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
16.07.2013, 18:11     Перевод int в символьный массив char #13
Цитата Сообщение от alsav22 Посмотреть сообщение
У меня получается, что это лишнее
А ты исходную постановку вопроса читал?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 18:14     Перевод int в символьный массив char #14
Цитата Сообщение от Evg Посмотреть сообщение
А ты исходную постановку вопроса читал?
А ты?
Цитата Сообщение от Xin4 Посмотреть сообщение
перевода целого числа в символьный массив..
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,127
Записей в блоге: 26
16.07.2013, 18:30     Перевод int в символьный массив char #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:41     Перевод int в символьный массив char
Еще ссылки по теме:

Перевод int и double в char* C++
C++ Перевод *char в int[] c++
C++ Перевод char в int

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.07.2013, 18:41     Перевод int в символьный массив char #16
Цитата Сообщение от Evg Посмотреть сообщение
Хотя, начинаю подозревать, что автор попросту кавычки потерял...
Согласен.
Yandex
Объявления
16.07.2013, 18:41     Перевод int в символьный массив char
Ответ Создать тему
Опции темы

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