Вопрос: Перевод целочисленного массива<int> в строку <char*&a

  • Автор темы jonijo
  • Дата начала
J

jonijo

#1
Здраствуй уважаемые коллеги целый вечер немогу найти ответ на вопрос как перевести массив типа инт в чар ну к примеру вот некоторая функция которая должна получить в итоге строку c двоичным представлением исходного числа.

C++:
void dva (char*str)
{ int n,i,k,summa=0;
int mas[30];

k=strlen (str);			 
for (i=0; i<strlen(str); i++)		 /*перевожу каждый элемент исходной троки исло*/
mas [k-1-i]=str [i]-'0';
for (i=0; i<strlen(str); i++)
summa+=mas[i]*power (8,i);  /*перевожу из 8-ой в 10-ую систему счисления записывая результат в перем типа инт*/

while (summa>=1){							/*нахожу остатки и сохр в массив типа инт*/
mas[i]=summa&2;
summa=summa/2;
++i;
++n;
}
А тут??? Не получается перевести мас в строку
 

DarkKnight

Well-known member
01.08.2010
653
0
#2
Здраствуй уважаемые коллеги целый вечер немогу найти ответ на вопрос как перевести массив типа инт в чар ну к примеру
jonijo, А что именно нужно если не по примеру.....
И еще вопросик.. Я если честно первую часть сообщение когда читал не понял...
Перевести массив int в char
Массив int - группа числен
а char - символьный тип...
Нужно как перевести именно? Строку получить, если да то каким образом обработать нужно массив int???
Считать его числом где каждый элемент отвечает за разряд? Или как???
 

DarkKnight

Well-known member
01.08.2010
653
0
#3
Из строки массив получить можно такими путями,
C++:
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>

using namespace std;

void main(void)
{
setlocale(LC_ALL,"Russian");
char buffer[1024]; //строка
int *Arr; //Наш динамический массив

cout << "Введите исходную строку состоящую и цифр: ";
cin.getline(buffer,1023);
//Выделим память под массив равное длине нашей строки
Arr = new int (strlen(buffer));
//Заполним массив и выведим его на экран
cout<< "Полученный массив Arr " << endl;
for (int i = 0; i<strlen(buffer); i++)
{
Arr[i] = buffer[i] - '0';
cout << "Arr[" << i << "] = " <<Arr[i] << endl;
}

//Теперь без массив рассмотрим варианты
//С проверкой преобразования
char *Error = NULL;
long long b = strtol(buffer,&Error,10);
if (*Error != NULL )
{
cout << "Введено неверное число в строке " << "необработанная часть '" << Error <<"'" << endl;
}
cout << "B = "<< b << endl;
//Без проверки преобразования
long c = atol(buffer);
cout << "C = "<< c << endl;

}
Добавлено: Ну а так в обратном порядке Arr<int> в char*
C++:
/*
codeby.net
Autor: DarkKnight125 (Denis Goncharov)
*/
#include <iostream>
#include <time.h>

using namespace std;

void main(void)
{
setlocale(LC_ALL,"Russian");
srand(time(NULL)); //Инициализируем генератор случ. величины
char buffer[1024]; //строка (исходная)
char Chislo[12]; //Буфер под элементы массива
int *Arr; //Наш динамический массив
int Size; //Размерность массива

cout<< "Введите размерность массива : ";
cin >> Size; //Введем размер с клавиатуры
Arr = new int[Size]; //Выделим память под массив
//Заполним массив случ. величинами и выведим на экран
cout << "Массив : " << endl;
for (int i = 0; i<Size; i++)
{
Arr[i] = rand()%100; //от 0 до 99
cout << Arr[i] << " ";
}

//Получаем строку
memset(buffer,0,1024); //Обнулим буферную строку
for (int i = 0; i< Size; i++) //Обойдем массив целочисленных элементов
{
itoa(Arr[i],Chislo,10); //Переведем эл. массива (число) в строку и запишим ее в Chislo, 10-указывает на систему счислений
strcat(buffer, Chislo); //Объединим строку buffer и Chislo
}
cout << endl << "Полученная строка : " << buffer << endl;


}
 

DarkKnight

Well-known member
01.08.2010
653
0
#4
2 jonijo: Актуальна ли данная тема еще для ваc???
Может существуют каки-нибудь вопросы?