Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
1

Как конвертировать массив int в int?

15.07.2015, 22:30. Показов 1104. Ответов 16
Метки нет (Все метки)

Есть массив целых чисел, как из всех этих чисел получить одно единственное?
C++
1
2
3
int myints[] = {7, 4, 5, 3, 0};
int a;
//Хочу чтобы a = 74530;
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2015, 22:30
Ответы с готовыми решениями:

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int...

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<ctime>...

Как заполнить один int пустой массив другим int массивом ?
Можно пример кода :)

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

16
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
15.07.2015, 22:36 2
perec200, вот вам вариант через строку:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
int main() {
    int myints[] = {7, 4, 5, 3, 0};
    
    std::string str;
    for(const auto &el:myints)
        str+=std::to_string(el);
        
    int number = std::stoi(str);
    std::cout<<number<<std::endl;
    return 0;
}
0
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,208
15.07.2015, 22:42 3
http://rextester.com/YDSA2611

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
#include <iostream>
 
 
template<size_t N> 
int accumulate(  const int (&arr)[N] )
{
    int result = arr[0];
    for(size_t n = 1; n < N; ++n)
        result = result * 10  + arr[n];
    return result;
}
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    int myints[] = {7, 4, 5, 3, 0};
    
    int a; // //Хочу чтобы a = 74530;
    
    a = accumulate(myints);
    
    std::cout<<"result = "<< a<< '\n';
    
}
0
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
15.07.2015, 22:49 4
hoggy, тоже думал над таким вариантом,но если не в первом элементе число будет больше 9,преобразование будет неверным.
0
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
15.07.2015, 22:50  [ТС] 5
Сделал. Всё оказалось достаточно просто.
C++
1
2
3
4
5
6
int myints[] = {7, 4, 5, 3, 0}, a = 0, c = 1;
 
for(int i=4; i>=0; i--){
a += myints[i]*c;
c *= 10;
}
0
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,208
15.07.2015, 22:54 6
Цитата Сообщение от S_el Посмотреть сообщение
тоже думал над таким вариантом,но если не в первом элементе число будет больше 9,преобразование будет неверным.
эт почему же?

действительно
0
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
15.07.2015, 22:57 7
Цитата Сообщение от hoggy Посмотреть сообщение
эт почему же?
на вашем-же коде:
http://ideone.com/9gIGb5

Добавлено через 34 секунды
Цитата Сообщение от perec200 Посмотреть сообщение
Сделал. Всё оказалось достаточно просто.
попробуйте изменить массив.
0
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
15.07.2015, 22:59  [ТС] 8
Всё ок.
https://ideone.com/LA0FZj
0
23 / 23 / 11
Регистрация: 04.12.2014
Сообщений: 395
15.07.2015, 22:59 9
Есть такое предложение
C++
1
2
3
4
5
6
7
8
int myints[] = {7, 4, 5, 3, 0};
int a;
string line = "";
foreach (int elem in myints)
{
line += elem.toString(); //пропишем линейку из наших элементов массива в стринг
}
a = Convert.toInt16(line);
вполне неплохо
0
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
15.07.2015, 23:04 10
1337trix, один минус,ваш вариант это не C++,а C#.
0
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,208
15.07.2015, 23:08 11
http://rextester.com/ILU96929

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
#include <iostream>
#include <cmath>
 
 
int count_digits(int val)
    { return ( val /= 10 ) ? 1 + count_digits(val) : 1; }
 
template<size_t N> 
int accumulate(  const int (&arr)[N] )
{
    int result = arr[0];
    for(size_t n = 1; n < N; ++n)
        result = result * pow( 10, count_digits(arr[n])) + arr[n];
        
    return result;
}
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    int myints[] = {17, 4, 50, 3, 0};
    
    const auto a = accumulate(myints);
    
    std::cout<<"result = "<< a<< '\n';
    
}
0
S_el
15.07.2015, 23:20
  #12

Не по теме:

hoggy, другое дело :)

1337trix, вот на Erlang,как видите,еще проще:

Prolog
1
2
L = [7, 4, 5, 3, 0].
{N,_}=string:to_integer(lists:concat(L)).

0
hoggy
15.07.2015, 23:26
  #13

Не по теме:

Цитата Сообщение от S_el Посмотреть сообщение
string:to_integer(lists:concat(L)).
не умею эрланг, но string действует как триггер: медлительный тормоз.
все решения завязанные на перегонку туда-сюда в строки и обратно - говнокод.

0
2417 / 1817 / 400
Регистрация: 15.12.2013
Сообщений: 7,894
15.07.2015, 23:30 14
Цитата Сообщение от hoggy Посмотреть сообщение
не умею эрланг, но string действует как триггер: медлительный тормоз.
все решения завязанные на перегонку туда-сюда в строки и обратно
Тоже предпочитаю решения на математике везде,где можно.Но конвертация в строку обычно самый простой вариант.
0
hoggy
15.07.2015, 23:48
  #15

Не по теме:

Цитата Сообщение от S_el Посмотреть сообщение
.Но конвертация в строку обычно самый простой вариант.
ага.

вот только оно там под капотом учитывает локаль,
бежит по таблицам...

виндузятно-плюснутая версия создает stringstream поток...

жуть >_<

0
S_el
16.07.2015, 00:33
  #16

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
ага.
вот только оно там под капотом учитывает локаль,
бежит по таблицам...
виндузятно-плюснутая версия создает stringstream поток...
да,но то,что под капотом, начинает беспокоить только когда переходишь на более высокий уровень программирования(высокий, не в плане отдаления от машинных команд :)).

0
1367 / 590 / 199
Регистрация: 02.08.2011
Сообщений: 2,882
16.07.2015, 03:15 17
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
#include <iostream>
#include <cmath>        
 
using namespace std;
 
int main ()
{
  int Arr[]={17, 4, 50, 3, 0, 999};
  int k=Arr[0];
  int r;  // разрядность числа
 
  int size=sizeof(Arr)/sizeof(*Arr)-1;  //Размер массива - 1
 
  for (int i=0;i<size;i++){
        if (!Arr[i+1]){
        k*=10;
        continue;
    }
    r = (int)log10(Arr[i+1])+1;
    k=k*pow(10,r)+Arr[i+1];
  }
 
  cout<<k<<"\n";
 
  return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2015, 03:15

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int...

Конвертировать массив int в буфер char
Здравствуйте! Помогите пожалуйста записать массив int в буфер char. Вот что я написала, но но в...

Конвертировать int и float в общий массив байт
Доброго времени суток, подскажите есть строка в чаре char szBuf =...

Как конвертировать String в int
Вот например: string a = 09; Сделать что б: Int b = 9; а также: string a = 17; Сделать...

Как в выделенную память записать поочередно число int, массив char[n], и еще число int
Выделяю память void* Start=malloc(Size); Как туда записать поочередно число int, массив char,...

Как понять int a(int x,int y, int z)?
какое значение будет у переменной а?


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.