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

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

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

Есть массив целых чисел, как из всех этих чисел получить одно единственное?
C++
1
2
3
int myints[] = {7, 4, 5, 3, 0};
int a;
//Хочу чтобы a = 74530;
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2015, 22:30
Ответы с готовыми решениями:

Как заполнить один 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 ...

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

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

char to int не могу не как конвертировать
читаю из файла в массив char'ов соответственно есь массив из четырех элементов в каторых записан...

16
S_el
2311 / 1738 / 369
Регистрация: 15.12.2013
Сообщений: 7,021
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
hoggy
Эксперт С++
7395 / 3319 / 686
Регистрация: 15.11.2014
Сообщений: 7,594
Завершенные тесты: 1
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
S_el
2311 / 1738 / 369
Регистрация: 15.12.2013
Сообщений: 7,021
15.07.2015, 22:49 4
hoggy, тоже думал над таким вариантом,но если не в первом элементе число будет больше 9,преобразование будет неверным.
0
15.07.2015, 22:49
perec200
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
hoggy
Эксперт С++
7395 / 3319 / 686
Регистрация: 15.11.2014
Сообщений: 7,594
Завершенные тесты: 1
15.07.2015, 22:54 6
Цитата Сообщение от S_el Посмотреть сообщение
тоже думал над таким вариантом,но если не в первом элементе число будет больше 9,преобразование будет неверным.
эт почему же?

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

Добавлено через 34 секунды
Цитата Сообщение от perec200 Посмотреть сообщение
Сделал. Всё оказалось достаточно просто.
попробуйте изменить массив.
0
perec200
0 / 0 / 0
Регистрация: 04.10.2014
Сообщений: 98
15.07.2015, 22:59  [ТС] 8
Всё ок.
https://ideone.com/LA0FZj
0
1337trix
23 / 23 / 11
Регистрация: 04.12.2014
Сообщений: 374
Завершенные тесты: 1
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
S_el
2311 / 1738 / 369
Регистрация: 15.12.2013
Сообщений: 7,021
15.07.2015, 23:04 10
1337trix, один минус,ваш вариант это не C++,а C#.
0
hoggy
Эксперт С++
7395 / 3319 / 686
Регистрация: 15.11.2014
Сообщений: 7,594
Завершенные тесты: 1
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
S_el
2311 / 1738 / 369
Регистрация: 15.12.2013
Сообщений: 7,021
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
daslex
1296 / 540 / 177
Регистрация: 02.08.2011
Сообщений: 2,756
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
16.07.2015, 03:15
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2015, 03:15

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

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)'
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?
Не понимаю, с чего начинать. Заранее спс.


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

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

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