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

Сформировать новый массив путем перевода элементов начального массива в десятичную систему

15.02.2018, 09:34. Просмотров 1096. Ответов 11
Метки нет (Все метки)

Здравствуйте, у меня есть такое задание:
Дан массив что складывается из чисел двоичной системы счисления . Сформировать новый массив путем перевода елементов начального массива в десятичную систему.

Пожалуйста помогите , не могу понять. Во-первых , как представить массив в двоичной системе . Во-вторых , как перевести из двоичной системы в десятичную .
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.02.2018, 09:34
Ответы с готовыми решениями:

Сформировать новый массив путем перевода значений элементов исходного массива в десятичную систему счисления
Необходимо ввести массив, состоящий из 9 элементов (девять двузначных чисел в восьмеричной системе...

Сформировать новый массив путем сложения соседних элементов исходного
1)Cформировать массив из 20 целых положительных чисел путем ввода их с клавиатуры (оформить при...

Вывести новый массив состоящий из элементов начального массива в заданной зависимости
1.Нужно ввести размерность начального одномерного массива c клавиатуры. Элементы заполняются с...

Массивы. Образовать новый массив путем умножения элементов массива А на минимальный элемент массива B
Даны массивы A(N) и B(N). Образовать новый массив C(N) путем умножения элементов массива A(N) на...

11
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
15.02.2018, 10:10 2
Xansis,
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
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
 
   setlocale(LC_ALL,"rus")
 
   int n;
   
   // создаем массив контейнеров битовых значений
   cout << "Введите кол-во элементов массива: ";
   cin >> n;
   bitset<8> *arr = new bitset<8> [n]; 
 
   // ручками инициализируем этот массив 8-разрядными числами в двоичном представлении
   for(int i = 0; i < n; i ++)
   {
      cout << "Введите " << i << " элемент массива в двоичном представлении (прим. 01110011): " ;
      cin >> *(arr + i);
   }
   
   // создаем массив чисел типа ulong той-же размерности и копируем в него наши двоичные значения в десятичном представлении
   ulong *new_arr = new ulong [n];
   cout << "Массив в десятичном представлении: " << endl;
   for(int i = 0; i < n; i ++)
   {
      *(new_arr + i) = (arr + i)->to_ulong;
      cout << i << " элемент = " << *(new_arr + i) << endl;
   }
 
   // чистим память
   delete [] new_arr;
   delete [] arr;
 
   return 0;
}
Советую вам почитать информацию вот тут http://cppstudio.com/post/5765/
Поправьте меня пожалуйста, если я где-то неправ
0
2 / 2 / 0
Регистрация: 15.02.2018
Сообщений: 26
15.02.2018, 18:10  [ТС] 3
al3ex, Простите , выдает такую ошибку :
18 4 D:\Documents\kf, 3\Áåçûìÿííûé2.cpp [Error] 'ulong' was not declared in this scope
18 11 D:\Documents\kf, 3\Áåçûìÿííûé2.cpp [Error] 'new_arr' was not declared in this scope
18 25 D:\Documents\kf, 3\Áåçûìÿííûé2.cpp [Error] 'ulong' does not name a type
26 14 D:\Documents\kf, 3\Áåçûìÿííûé2.cpp [Error] type '<type error>' argument given to 'delete', expected pointer
Если не сложно обьясните суть этой ошибки и ее решение . Читал в интернете , но там было связанно с переменно. Ошибку выдавало из-за того что она была не введена в программу . А тут сам "ulong" является типом данных
0
1462 / 1170 / 551
Регистрация: 08.01.2012
Сообщений: 4,509
15.02.2018, 22:28 4
Цитата Сообщение от Xansis Посмотреть сообщение
что складывается из чисел двоичной системы счисления
на компе все числа в этой системе, что там хранится, строки? предположу что псевдодвоичные
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    int b[]={110101,10111,111,101010};
    int n=sizeof(b)/sizeof(int);
    int *d=new int[n];
    for(int i=0; i<n; i++)
    {
        int n2=1;
        int a=b[i];
        for(d[i]=0; a; a/=10,n2*=2)
            d[i]+=a%10*n2;
        cout<<d[i]<<" ";
    }
    cout<<endl;
    delete[] d;
0
457 / 343 / 226
Регистрация: 24.02.2017
Сообщений: 1,248
15.02.2018, 23:51 5
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
30
31
32
33
34
35
#include <sstream>
#include <iostream>
 
 int f_d( int n)
  {
    size_t k,i=0,j;
    std:: stringstream ss;
 
    ss<<n;
    n=0;
    k=ss.str().length()-1;
    while(ss.str()[i]!='\0')
     {
       int с=1;
       for(j=0;j<k-i;j++)
          с*=2;
       n+=с*(ss.str()[i]-'0');
       i++;
     }
    return n;
  }
 
int main()
{
   int b[4]={110101,10111,111,101010},*d;
 
   d=new int[4];
   for(int i=0;i<4;i++)
   {
     d[i]=f_d(b[i]);
     std::cout<<d[i]<<"   ";
   }
  system("PAUSE");
  return 0;
}
0
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
16.02.2018, 09:14 6
Xansis, замените
C++
1
ulong
на
C++
1
unsigned long
0
5967 / 2094 / 736
Регистрация: 10.12.2010
Сообщений: 5,914
Записей в блоге: 3
16.02.2018, 14:05 7
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 <algorithm>
#include <vector>
#include <string>
#include <iterator>
 
int main()
{
  std::vector<std::string> bin = 
  {
    "00000011", "00011000", "01100110", "11010100", "00111101", "11111110", 
    "11101001", "01011010", "01001110", "10001100"
  };
  
  std::vector<int> dec;
  
  for (std::string x : bin) 
  {
    dec.push_back(std::stoi(x, nullptr, 2));
  }
  
  std::copy(dec.begin(), dec.end(), std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
  
  return 0;
}
0
2 / 2 / 0
Регистрация: 15.02.2018
Сообщений: 26
19.02.2018, 14:50  [ТС] 8
al3ex, заменил , и заменил также "to_ulong" на "unsigned long"
выдает такую ошибку '[Error] invalid conversion from 'std::bitset<8ull>*' to 'long unsigned int' [-fpermissive]'
в этой строке " *(new_arr + i) = (arr + i)->unsigned long;"
0
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
19.02.2018, 15:26 9
Xansis, Вы не поняли, строчку
C++
1
*(new_arr + i) = (arr + i)->to_ulong;
осталяем как была, а меняем
C++
1
 ulong *new_arr = new ulong [n];
на
C++
1
 unsigned long *new_arr = new unsigned long [n];
0
2 / 2 / 0
Регистрация: 15.02.2018
Сообщений: 26
19.02.2018, 17:01  [ТС] 10
al3ex, Да , я это тоже делал , но мне тогда выдает такую ошибку :
[Error] cannot convert 'std::bitset<_Nb>::to_ulong<8ull>' from type 'long unsigned int (std::bitset<8ull>:() const' to type 'long unsigned int'
0
177 / 15 / 11
Регистрация: 05.12.2017
Сообщений: 131
20.02.2018, 09:21 11
Лучший ответ Сообщение было отмечено Xansis как решение

Решение

Xansis, прошу прощения, нашел у себя ошибку в этой строке:
C++
1
*(new_arr + i) = (arr + i)->to_ulong;
Нормальный вызов метода должен выглядеть так:
C++
1
*(new_arr + i) = (arr + i)->to_ulong();
В конечном итоге ваш код:
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
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
 
   setlocale(LC_ALL,"rus")
 
   int n;
   
   // создаем массив контейнеров битовых значений
   cout << "Введите кол-во элементов массива: ";
   cin >> n;
   bitset<8> *arr = new bitset<8> [n]; 
 
   // ручками инициализируем этот массив 8-разрядными числами в двоичном представлении
   for(int i = 0; i < n; i ++)
   {
      cout << "Введите " << i << " элемент массива в двоичном представлении (прим. 01110011): " ;
      cin >> *(arr + i);
   }
   
   // создаем массив чисел типа ulong той-же размерности и копируем в него наши двоичные значения в десятичном представлении
   unsigned long *new_arr = new unsigned long [n];
   cout << "Массив в десятичном представлении: " << endl;
   for(int i = 0; i < n; i ++)
   {
      *(new_arr + i) = (arr + i)->to_ulong();
      cout << i << " элемент = " << *(new_arr + i) << endl;
   }
 
   // чистим память
   delete [] new_arr;
   delete [] arr;
 
   return 0;
}
Всегда будьте внимательны
1
2 / 2 / 0
Регистрация: 15.02.2018
Сообщений: 26
21.02.2018, 02:05  [ТС] 12
al3ex, Огромное спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2018, 02:05

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Дан массив a[n,m]. Получить новый массив путем деления всех элементов исходного массива на элемент, наименьший по модулю
Дан массив a. Получить новый массив путем деления всех элементов исходного массива на элемент,...

Образовать новый массив Q(N) путем умножения элементов массива P(N) на число
ребята помогите пожалуйста с массивом! Горю!! Даны массивы P(N) и R(N). Образовать новый массив...

Сформировать третий массива путем вставки в первый массив элементов второго массива без нарушения упорядоченности
Даны 2 линейных массива, упорядоченные по убыванию. Написать программу, формирования третьего...

Задан массив. Получить из него новый массив путем деления элементов каждой из строк первого массива на элемент этой строки
Задан массив А. Получить из него новый массив путем деления элементов каждой из строк первого...

Найти среднее арифметическое элементов массива, из элементов массива, меньших среднего арифметического, сформировать новый массив
Дан одномерный массив. Найти среднее арифметическое элементов массива, из элементов массива,...

Сформировать новый массив из отрицательных элементов первого массива с четными номерами и элементов второго массива
Помогите пожалуйста очень срочно нужно сделать программу. Сформировать новый массив из...


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

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

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