14 / 0 / 0
Регистрация: 23.08.2018
Сообщений: 23
1

Не могу понять, где выхожу за пределы динамического массива.Голову сломал

28.09.2018, 12:15. Показов 1021. Ответов 4

Author24 — интернет-сервис помощи студентам
ВОТ КОД :

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <vector>
#include <random>
#include <ctime>
using namespace std;
 
 void randomGeneration(int arr[],int &size)
{
     srand(time(NULL));
     std::random_device random_device;
     std::mt19937 generator(random_device());
     std::uniform_int_distribution<> distribution(4, 8);
      size = distribution(generator);
     for (int i = 0; i < size; i++)
     {
         
         std::random_device random_device;
         std::mt19937 generator(random_device());
         std::uniform_int_distribution<> distribution(0, 1);
         int tmp;
         tmp = distribution(generator);
         arr[i] = tmp;
     } 
}
 void interpreter(int arr[], int &size)
 {
     int x = 0;
     const int SIZE = size-1;
     for (int  i = 0; i < size; i++)
     {
         cout << arr[i];
     }
     cout << endl;
     for (int i = 0; i < size; i++)
     {
         for( int j = SIZE; j >= 0; j--,i++)
         {
             int result = arr[i] * pow(2, j);
             x = x + result;
         }
     }
     cout << x << endl;
 }
 
 
 
int main()
{
    int size = 0;
    int *arr = new  int[size];
    randomGeneration(arr, size);
    interpreter(arr,size);
    delete[] arr;
    system("pause");
    return 0;
}
Надеюсь на вашу помощь.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2018, 12:15
Ответы с готовыми решениями:

Не могу прижать подвал, сломал голову:)
Блочная вёрстка. Body разбит на &lt;div id=&quot;art-main&quot;&gt; ( вся страница кроме подвала) &lt;div...

Голову сломал не могу найти из-за чего ошибка syntax error, unexpected '}'
Доброго времени суток, вот уже час так эток 3 ломаю голову, не пойму что где ошибка Parse error:...

Добавить указанное количество элементов в голову динамического массива
Описать массив указанного пользователем количества элементов. Добавить указанное количество...

Голову уже сломал
DEL

4
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
28.09.2018, 12:25 2
Desertirpipi, массиву нужно задать размер. у Вас такой - строка 49: int size = 0;

сформулируйте условие задачи
0
14 / 0 / 0
Регистрация: 23.08.2018
Сообщений: 23
28.09.2018, 12:28  [ТС] 3
Я потом его указываю в функции , и передаю по ссылке
0
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
28.09.2018, 12:54 4
Лучший ответ Сообщение было отмечено Desertirpipi как решение

Решение

Ошибку с памятью я Вам исправил:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <vector>
#include <random>
#include <ctime>
using namespace std;
 
void randomGeneration(int* &arr, int &size)
{
    srand((unsigned)time(NULL));
    std::random_device random_device;
    std::mt19937 generator(random_device());
    std::uniform_int_distribution<> distribution(4, 8);
    size = distribution(generator);
    arr = new int[size];   // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    for (int i = 0; i < size; i++)
    {
 
        std::random_device random_device;
        std::mt19937 generator(random_device());
        std::uniform_int_distribution<> distribution(0, 1);
        int tmp;
        tmp = distribution(generator);
        arr[i] = tmp;
    }
}
void interpreter(int arr[], int &size)
{
    for (int i = 0; i < size; i++)
    {
        cout << arr[i];
    }
    cout << endl;
 
    int SIZE = size - 1;
    long long int x = 0;
    for (int i = 0; i < size; i++)
    {
        long long int pow2j = 1;
        for (int j = SIZE; j >= 0; j--) // тут была явная ошибка ли с i++  ???????????????
        {
            long long result = arr[j-SIZE] * pow2j;
            pow2j <<= 1; // pow(2,j-SIZE)
            x += result;
        }
    }
    cout << x << endl;
}
 
 
 
int main()
{
    int size = 0;
    int *arr; // = new  int[size];
    randomGeneration(arr, size); // память выделяется в функции
    interpreter(arr, size);
    delete[] arr;
    system("pause");
    return 0;
}
но что творится в функции interpreter я совершенно не понял.
Написал так, чтобы было более-менее осмысленно.
0
14 / 0 / 0
Регистрация: 23.08.2018
Сообщений: 23
28.09.2018, 13:00  [ТС] 5
с I++ не ошибка, там я перевожу двоичный код в 16 ричный. Спасибо вам
0
28.09.2018, 13:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2018, 13:00
Помогаю со студенческими работами здесь

Z-index голову сломал
Привет всем! Я в отчаянии. Подскажите почему z-index не пашет, кто знает: HTML &lt;!DOCTYPE...

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

Компилятор выдает ошибку при объявлении массива. Не могу понять где соль
Объясните пожалуйста в чем моя ошибка. Вот исходник #include &lt;iostream&gt; // cin, cout,endl...

Ребят я не могу понять где ошибка (циклический сдвиг элементов массива вправо)
Вот дана такая задача Напишите программу, которая циклически сдвигает элементы массива вправо (0-й...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru