Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10

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

16.01.2017, 11:35. Показов 1959. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2017, 11:35
Ответы с готовыми решениями:

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

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

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

11
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:01
Какие поля должна содержать структура? Динамический массив и его размер?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:06  [ТС]
необходимо создать структуру создания дин. массива(двух, я полагаю)
структуру генерации в одном чисел, а в другом присвоение элементам массива значения элементов первого массива в нумерации от 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Эксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:19
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
структуру создания дин. массива
Так структуру, хранящую динамический массив или (шаблонную ?) функцию, генерирующую динамический массив?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:24  [ТС]
мне необходимо структура, которая (получается) хранит динамический массив, до того пока я сам его не отчищу, как показано выше в наработке моей
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:26
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
как показано выше в наработке моей
У вас в примере шаблонные функции и нет никаких структур.
Если использовать структуры, то освобождение динамической памяти следует переложить на деструктор.
Но хотелось бы понять, что вам конкретно нужно, т.к. вы говорите о структурах, а код приводите с функциями, при том шаблонными.
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 12:39  [ТС]
оуу... голова уже плывет, функции с структурами путаю, простите
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 12:59
Цитата Сообщение от Byt1lkaOr2mI Посмотреть сообщение
оуу... голова уже плывет, функции с структурами путаю, простите
Так и что вам в итоге нужно?
И делать ли "это" шаблонным?
0
0 / 0 / 0
Регистрация: 17.11.2016
Сообщений: 10
16.01.2017, 13:03  [ТС]
получается мне нужны функции, и раз вы мои называете шаблонными, то мне шаблонные и нужны, простите за расплывчивость
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 13:26
Лучший ответ Сообщение было отмечено 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  [ТС]
прошу прощения, но не могли бы вы мнепояснить что означают все эти объявления в скобках и что за (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Эксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
16.01.2017, 13:49
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2017, 13:49
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru