• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

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

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

jonijo

Здраствуй уважаемые коллеги целый вечер немогу найти ответ на вопрос как перевести массив типа инт в чар ну к примеру вот некоторая функция которая должна получить в итоге строку 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;
}

А тут??? Не получается перевести мас в строку
 
Здраствуй уважаемые коллеги целый вечер немогу найти ответ на вопрос как перевести массив типа инт в чар ну к примеру
jonijo, А что именно нужно если не по примеру.....
И еще вопросик.. Я если честно первую часть сообщение когда читал не понял...
Перевести массив int в char
Массив int - группа числен
а char - символьный тип...
Нужно как перевести именно? Строку получить, если да то каким образом обработать нужно массив int???
Считать его числом где каждый элемент отвечает за разряд? Или как???
 
Из строки массив получить можно такими путями,
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;


}
 
2 jonijo: Актуальна ли данная тема еще для ваc???
Может существуют каки-нибудь вопросы?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!