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

Тема в разделе "C/C++/C#", создана пользователем jonijo, 10 дек 2010.

  1. jonijo

    jonijo Гость

    Репутация:
    0
    Здраствуй уважаемые коллеги целый вечер немогу найти ответ на вопрос как перевести массив типа инт в чар ну к примеру вот некоторая функция которая должна получить в итоге строку 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;
    }
    А тут??? Не получается перевести мас в строку
     
  2. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    jonijo, А что именно нужно если не по примеру.....
    И еще вопросик.. Я если честно первую часть сообщение когда читал не понял...
    Перевести массив int в char
    Массив int - группа числен
    а char - символьный тип...
    Нужно как перевести именно? Строку получить, если да то каким образом обработать нужно массив int???
    Считать его числом где каждый элемент отвечает за разряд? Или как???
     
  3. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    Из строки массив получить можно такими путями,
    Код (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;


    }
     
  4. DarkKnight

    DarkKnight Well-Known Member
    C\C++ Team

    Репутация:
    0
    Регистрация:
    1 авг 2010
    Сообщения:
    653
    Симпатии:
    0
    2 jonijo: Актуальна ли данная тема еще для ваc???
    Может существуют каки-нибудь вопросы?
     
  5. pastorixx

    pastorixx Active Member

    Репутация:
    0
    Регистрация:
    7 май 2010
    Сообщения:
    26
    Симпатии:
    0
    юьтюрм
     
Загрузка...

Поделиться этой страницей