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

Перевод массива в число - C++

Восстановить пароль Регистрация
 
Катод
 Аватар для Катод
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 89
Завершенные тесты: 1
06.05.2016, 11:04     Перевод массива в число #1
Как перевести массив в число?
Например,
C++
1
2
int mas[] {1,2,3};
int ch;
Нужно, чтобы ch равнялась mas, то есть, 123.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2016, 11:04     Перевод массива в число
Посмотрите здесь:

C++ Перевод из строки в число
Перевод символа в число C++
Перевод строки в число C++
C++ Перевод строки в число
C++ Перевод из строки в число
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,599
06.05.2016, 11:12     Перевод массива в число #2
C++
1
2
ch=mas[0];
for(int i=1;i<3;i++) ch*=10+mas[i];
Если не ошибаюсь.
dcshowcousa
25 / 17 / 48
Регистрация: 22.10.2015
Сообщений: 303
06.05.2016, 11:14     Перевод массива в число #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
#include<iostream>
#include<string>
const int N = 4;
int func(int Ar[N])
{
    std::string sum = "";
    for (int i = 0; i < N; i++)
        sum += std::to_string(Ar[i]);
    return stoi(sum,0,10);
}
int main()
{
    
    int Ar[N];
    for (int i = 0; i < N; i++)
    {
        Ar[i] = rand() % 10+5;
        std::cout << Ar[i] << " ";
    }
    int X = func(Ar);
    std::cout << std::endl << X;
    system("pause");
    return 0;
}
Катод
 Аватар для Катод
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 89
Завершенные тесты: 1
06.05.2016, 11:47  [ТС]     Перевод массива в число #4
Hikari, зачем-то после первого все числа удваиваются.
А ещё я не въезжаю тут: ch*=10+mas[i]. Зачем прибавлять 10?

dcshowcousa, ух...) компилятор ругается на
C++
1
2
sum += std::to_string(Ar[i]);
* * return stoi(sum,0,10);
Вот что пишет негодяй
Перевод массива в число
Мне, кстати, тоже не очень понятно, что такое "to_string(Ar[i])" и "stoi(sum,0,10)".
dcshowcousa
25 / 17 / 48
Регистрация: 22.10.2015
Сообщений: 303
06.05.2016, 11:54     Перевод массива в число #5
Катод, какой у вас компилятор?
to_string переводит число (в данном случае) в строку
stoi наоборот - из строки число
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,599
06.05.2016, 12:05     Перевод массива в число #6
Цитата Сообщение от Катод Посмотреть сообщение
Зачем прибавлять 10?
Имелось ввиду следующее:
C++
1
ch=ch*10+mas[i];
Надо было так и написать.
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
06.05.2016, 13:23     Перевод массива в число #7
Катод, есть ли уточнения к условиям задачи?
например: все положительные, целые, в диапазоне 0-9 (или 0-32000)
Есть разница как делать.
У Hikari, хороший алгоритм, но для "все положительные, целые, в диапазоне 0-9" - другой диапазон не пройдет.
Hikari
Хитрая блондиночка $)
 Аватар для Hikari
1336 / 899 / 272
Регистрация: 21.12.2015
Сообщений: 3,599
06.05.2016, 13:28     Перевод массива в число #8
Цитата Сообщение от Petrolion Посмотреть сообщение
другой диапазон не пройдет.
А другой диапазон не подойдет в любом случае. Цифры для данной задачи только 0-9 могут использоваться.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,231
06.05.2016, 13:32     Перевод массива в число #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
 
 
 
int main()
{
   int mas[]{71,2213,338};
  
   std::string a;
   std::for_each( std::begin( mas ), std::end( mas ), [&]( const int current ) 
   {
      a += std::to_string( current );
   });
   int num = atoi(a.c_str());
 
   cout << num << endl;
}
Petrolion
24 / 24 / 7
Регистрация: 02.02.2016
Сообщений: 124
06.05.2016, 14:50     Перевод массива в число #10
Сообщение было отмечено автором темы, экспертом или модератором как ответ
А это "математический" вариант без использования строк:
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
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
 
int func(int* a, int n)
{
    double b;
    int f = 0, e;
    for (int i = 0; i < n; i++)
    {
        b = log10((double)a[i]);
        int g = (int)b;
        e = 10;
        for (int k = 0; k < g; k++)
            e*=10;
        f= f*e+a[i];
    }
    return f;
}
 
int main()
{
    int n = 3;
    int mas[3]={71,2213,338};
    cout << func(mas,n) << endl;
_getch();
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2016, 18:51     Перевод массива в число
Еще ссылки по теме:

Перевод из строки в число C++
Перевод строки в число C++
C++ Перевод строки в число

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

Или воспользуйтесь поиском по форуму:
Катод
 Аватар для Катод
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 89
Завершенные тесты: 1
08.05.2016, 18:51  [ТС]     Перевод массива в число #11
dcshowcousa,
какой у вас компилятор?
Code Blocks. Спасибо за разъяснения


rikimaru2013, тоже компилятор ругается

Petrolion, а тут всё работает!

Всем спасибо!
Yandex
Объявления
08.05.2016, 18:51     Перевод массива в число
Ответ Создать тему
Опции темы

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