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

Преобразование кода в ряд структур, создание динамического массива

16.01.2017, 11:35. Показов 1679. Ответов 11

Здравствуйте, у меня вопрос, как данный ниже код можно преобразовать в структурах, чтобы массив был динамическим

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
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main()
{
    int a[100];
    int i,j;
    int b[100];
    int n,k;
    cout << "vvedite n";
    scanf_s("%i", &n);
        for (i = 1; i <= 3*n; i = i + 1)
        {
            a[i] = rand();
            printf_s("\na[%i]=%i\n", i,a[i] );
        }
        for (j = 1; j <= n; j = j + 1)
        {
                b[j] = a[2*n+j];
                printf_s("b[%i]=%i\n", j, b[j]);
        }
        k = 0;
        j = 1;
        i = 1;
        while ((j <= n) & (i <= 2 * n))
        {
       if (b[j] != a[i])
           i = i + 1;
       else
       {
           k = k + 1;
           j = j + 1;      }
   }
   if (k >= n)
       cout << "\nravni\n";
    else
       cout << "\nneravni\n";
            system("pause");
}
не могу понять, как это сделать
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2017, 11:35
Ответы с готовыми решениями:

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

Создание копии динамического массива структур
Есть динамический массив структур, есть сортировка. Проблема заключается в том, что если сделать...

Создание динамического массива структур и его удаление
Господа, поясните пожалуйста следующий момент: создаю структуру: struct TTagList { ...

Сортировка динамического массива структур
Доброго всем здравия, духовного и телесного. Сортирую массив структур, но понимаю, что делается...

11
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:01 2
Какие поля должна содержать структура? Динамический массив и его размер?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:06  [ТС] 3
необходимо создать структуру создания дин. массива(двух, я полагаю)
структуру генерации в одном чисел, а в другом присвоение элементам массива значения элементов первого массива в нумерации от 2*n+1 до 3*n
структура сравнения элементов 2 массива с элементами первого в нумерации от 1 до 2*n

Добавлено через 1 минуту
я примерно набросал, но как и ожидалось, я много где ошибся

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
template  <typename a>
template  <typename b>
void CreateMas(int n, a* &mas,b* &mass)
{
    mas = new a[3*n];
    mass = new b[n]
} 
template  <typename a>
template  <typename b>
void GenMas(int n, a * mas, b* mass)
{
    for (int i = 1; i <= 3*n; i++)
        *(mas + i) = ((a)rand() / RAND_MAX + rand() % 50 - rand() % 30
    for (int i = 1; i <= n; i++)
        *(mass + 1) = mas[2*n+i]
}
template  <typename a>
template  <typename b>
bool ravenstvo(int n, a*mas, b*mass)
{
    bool flag = true;
    int k = 0;
    int j = 1;
    int i = 1;
    while ((j <= n) & (i <= 2 * n))
    {
        if (mass[j] != mas[i])
        {
            i = i + 1;
        else
        
            k = k + 1;
            j = j + 1;
        
        }
    }
    if k >= n
    else
    {
        flag = false;
        break;
    }
}
template  <typename a>
template  <typename b>
void DelMas(int n, a*mas, b*mass)
{
    delete[] mas; delete[] mass;
}
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:19 4
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
структуру создания дин. массива
Так структуру, хранящую динамический массив или (шаблонную ?) функцию, генерирующую динамический массив?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:24  [ТС] 5
мне необходимо структура, которая (получается) хранит динамический массив, до того пока я сам его не отчищу, как показано выше в наработке моей
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:26 6
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
как показано выше в наработке моей
У вас в примере шаблонные функции и нет никаких структур.
Если использовать структуры, то освобождение динамической памяти следует переложить на деструктор.
Но хотелось бы понять, что вам конкретно нужно, т.к. вы говорите о структурах, а код приводите с функциями, при том шаблонными.
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:39  [ТС] 7
оуу... голова уже плывет, функции с структурами путаю, простите
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:59 8
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
оуу... голова уже плывет, функции с структурами путаю, простите
Так и что вам в итоге нужно?
И делать ли "это" шаблонным?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 13:03  [ТС] 9
получается мне нужны функции, и раз вы мои называете шаблонными, то мне шаблонные и нужны, простите за расплывчивость
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 13:26 10
Лучший ответ Сообщение было отмечено Byt1lkaOr2mI как решение

Решение

Измените заполнение и сравнение под своё задание
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 <functional>
#include <random>
 
template <typename T>
T* Create(const size_t size)
{
    return new T[size];
}
 
template <typename T>
void Free(T *a)
{
    delete[] a;
}
 
template <typename T, typename Gen>
void RandomFill(T *arr, const size_t size, Gen gen)
{
    for (size_t i = 0; i < size; i++)
        arr[i] = gen();
}
 
template <typename T>
void Print(const T *arr, const size_t size)
{
    for (size_t i = 0; i < size; i++)
        std::cout << arr[i] << " ";
    std::cout << std::endl;
}
 
template <typename T>
bool Compare(const T *arr1, const T *arr2, const size_t size)
{
    // здесь код сравнения
    for (size_t i = 0; i < size; i++)
        if (arr1[i] != arr2[i])
            return false;
    return true;
}
 
int main()
{
    size_t N;
    std::cout << "Enter N: ";
    std::cin >> N;
 
    int *a = Create<int>(N);
    RandomFill(a, N, std::bind(std::uniform_int_distribution<>(0, 9), std::mt19937{ std::random_device()() }));
    Print(a, N);
 
    int *b = Create<int>(N);
    RandomFill(b, N, std::bind(std::uniform_int_distribution<>(3, 7), std::mt19937{ std::random_device()() }));
    Print(b, N);
 
    std::cout << std::boolalpha << Compare(a, b, N) << std::endl;
 
    Free(a);
    Free(b);
}
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 13:38  [ТС] 11
прошу прощения, но не могли бы вы мнепояснить что означают все эти объявления в скобках и что за (0,9), (3,7),
не могу понять откуда они взялись?
C++
1
2
3
4
5
6
7
    int *a = Create<int>(N);
    RandomFill(a, N, std::bind(std::uniform_int_distribution<>(0, 9), std::mt19937{ std::random_device()() }));
    Print(a, N);
 
    int *b = Create<int>(N);
    RandomFill(b, N, std::bind(std::uniform_int_distribution<>(3, 7), std::mt19937{ std::random_device()() }));
    Print(b, N);
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 13:49 12
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
что за (0,9), (3,7)
границы распределения.
Я использовал работу со СЧ из С++11.
http://www.quizful.net/post/ra... n-in-cpp11

Добавлено через 3 минуты
uniform_int_distribution - распределение СЧ
mt19937 - (псевдо) генератор СЧ
{ std::random_device()() } инициализируем с помощью вызова operator() ГСЧ random_device
bind создаёт объект, который связывает переданную функцию и аргументы и при обращении перенаправляет запрос, осуществляя вызов "связки".
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2017, 13:49
Помогаю со студенческими работами здесь

организация динамического массива структур
Пожалуйста, дайте пример полного кода программы, в которой формируется динамический массив структур...

Очищение динамического массива структур
Здравствуйте, Господа. Есть структура, например такая: typedef struct cont1 { long int n; char...

Удаление динамического массива структур
Если удалять массив структур как обычно пишут, то при запросе следующей структуры из массива на...

Память для динамического массива структур
Есть функция Insert, в которой я даю параметрами старый массив объектов структуры, его размер и...


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

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

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