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

Дублирование элементов массива

03.03.2022, 23:04. Показов 1159. Ответов 1
Метки нет (Все метки)

Описать процедуру DoubleX(A, N, X), дублирующую в целочисленном массиве A размера N элементы, равные целому числу X. Массив A и число N являются входными и выходными параметрами. С помощью этой процедуры продублировать числа XA, XB, XC в массивах A, B, C размера NA,NB, NC соответственно и вывести размер и содержимое полученных массивов.

Очень нужен работающий код!!

Добавлено через 4 часа 39 минут
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
61
62
63
64
65
66
67
68
69
70
#include <iostream>
using namespace std;
void DoubleX(int* &A, int &N, int X);
int main()
{
int NA, NB, NC, XA, XB, XC;
int* A = new int[8] {1, 6, 92, 52, 67, 64, 6, 5};
NA = 8;
int* B = new int[8] {2, 0, 8, 2, 67, 9, 7, -1};
NB = 8;
int* C = new int[8] {6, 6, 45, 52, 6, 3, 4, 2};
NC = 8;
cout << "Enter number XA : ";
cin >> XA;
cout << "Enter number XB : ";
cin >> XB;
cout << "Enter number XC : ";
cin >> XC;
DoubleX(A, NA, XA);
cout << "\nNew size of array : " << NA << endl;
cout << "Array A:" << endl;
for (int i = 0; i < NA; i++)
{
cout << A[i] << " ";
}
DoubleX(B, NB, XB);
cout << "\n\nNew size of array : " << NB << endl;
cout << "Array B:" << endl;
for (int i = 0; i < NB; i++)
{
cout << B[i] << " ";
}
DoubleX(C, NC, XC);
cout << "\n\nNew size of array : " << NC << endl;
cout << "Array C:" << endl;
for (int i = 0; i < NC; i++)
{
cout << C[i] << " ";
}
}
void DoubleX(int* &A, int &N, int X)
{
int j = 0;
int* B = new int[2 * N];
for (int i = 0; i < N; i++)
{
B[j++] = A[i];
if (A[i] == X)
{
B[j++] = A[i];
}
}
N = j;
A = new int[N];
for (int i = 0; i < N; i++)
{
A[i] = B[i];
}
}
//имеется массив длиной 8 символов
//Вводим число для дублирования
//Вызов ф-и дублирования -> передаем указатель на массив, длину и число для копирования
//Создаём счётчик j для нового массива и новый массив, который в 2 раза больше длины 1го
//В цикле for проходим по каждому эл-ту массива, записывая во 2й и увеличивая j
//Если элемент равен числу для дублирования - опять записываем во 2й массив и увеличиваем j
//теперь длина j равна новому массиву (N=j) -> N изменяется в основной программе (ссылка на функцию)
//Для 1го массива выделяем новую память (он - выходной параметр)
//Переписываем в 1й массив весь 2й массив
//Выводим на экран результат
//Повторяем процедуру 3 раза
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.03.2022, 23:04
Ответы с готовыми решениями:

Двунаправленный список (добавление/удаление элементов в голову, просмотр списка, реализовать дублирование элементов с заданным значением)
Здравствуйте! Помогите написать программу, обеспечивающую работу с двунаправленным нециклическим...

Дублирование элементов массива
Описать процедуру DoubleX(A, N, X), дублирующую в целочисленном массиве A размера N элементы,...

Дублирование элементов
Здравствуйте. У меня возник такой вопрос. Мне дана определённая последовательность чисел(одномерный...

Дублирование элементов послед. и т.д.
Помогите пожалуйста с задачкой: Дана последовательность натуральных чисел {Aj}j=1...n (n&lt;=10000)....

1
0 / 0 / 0
Регистрация: 03.03.2022
Сообщений: 2
25.03.2022, 17:27  [ТС] 2
Новый вид программы с генерацией случайных чисел в динамических массивах и комментариями


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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>
#include <clocale>         // заголовочный файл, представляющий функцию setlocale 
#include <ctime>           // заголовочный файл, прдставляющий функцию time
 
using namespace std;           // для уменьшения кода (позволяет не писать std:: возле строки ввод-вывод)
 
 
void DoubleX(int*& A, int& N, int X)                                // описываем функцию дублирования   
{
    int j = 0;                                              // создаём счётчик для нового массива
    int* B = new int[2 * N];                                    // новый массив, который в 2 раза больше длины 1го
    for (int i = 0; i < N; i++)                                 // описываем цикл 
    {
        B[j++] = A[i];
        if (A[i] == X)                                      // элемент = числу дублирования
        {
            B[j++] = A[i];                              // записываем во 2й массив и увеличиваем j
        }
    }
    N = j;                                  // длина j равна новому массиву, N изменяется в основной функции
    A = new int[N];                     // выделяем новую динамическую память (является выходным параметром) 
    for (int i = 0; i < N; i++)
    {
        A[i] = B[i];                   // переписываем в 1й массив весь 2й массив
    }
}
 
int main()                                                   // главная функция 
{
    srand(time(0));                                              // генерация случайных чисел при каждом запуске
    setlocale(LC_CTYPE, "Russian");                                      // функция локализации на русский язык
 
    int NA, NB, NC, XA, XB, XC;         // описываем целочисленные перменные отвещающие за длины 3х массивов
    cout << "Введите размерность первого массива:  " << endl;
    cin >> NA;
    cout << "Начальный вид массива: " << endl;
    int* A = new int[NA];                                          // описание динамического массива А
    for (int i = 0; i < NA; i++)
    {
        A[i] = rand() % 199 - 99;              // генерация случайных чисел [-99;99] для заполнения элементов массива
    }
    for (int i = 0; i < NA; i++)
        cout << A[i] << " ";
 
    cout << "\n\n" << "Введите размерность второго массива:  " << endl;
    cin >> NB;
    cout << "Начальный вид массива: " << endl;
    int* B = new int[NB];                               // описание динамического массива В
    for (int i = 0; i < NB; i++)
    {
        B[i] = rand() % 199 - 99;        // генерация случайных чисел [-99;99] для заполнения элементов массива
    }
    for (int i = 0; i < NB; i++)
    {
        cout << B[i] << " ";
    }
 
    cout << "\n\n" << "Введите размерность третьего массива:  " << endl;
    cin >> NC;
    cout << "Первоначальный вид массива: " << endl;
    int* C = new int[NC];                              // описание динамического массива С
    for (int i = 0; i < NC; i++)
    {
        C[i] = rand() % 199 - 99;             // генерация случайных чисел [-99;99] для заполнения элементов массива
    }
    for (int i = 0; i < NC; i++)
    {
        cout << C[i] << " ";
    }
 
    cout << "\n\n" << "Введите число для дублирования первого массива: ";   // ввод числа ХА для дублирования
    cin >> XA;
    cout << "\n" << "Введите число для дублирования элементов второго массива: ";  // ввод числа ХВ для дублирования
    cin >> XB;
    cout << "\n" << "Введите число для дублирования элементов третьего массива: "; // ввод числа ХС для дублирования
    cin >> XC;
 
    DoubleX(A, NA, XA);                      // ф-я дублирования (указание на массив, длины, числа дублирования)
    cout << "\n\nНовая размеррность первого массива : " << NA << endl;   // выводим на экран новый размер массива
    cout << "Новый вид массива : " << endl;
    for (int i = 0; i < NA; i++)                              // выводим начальные элементы массива через пробел 
    {
        cout << A[i] << " ";
    }
 
    DoubleX(B, NB, XB);                  // ф-я дублирования (указание на массив, длины, числа дублирования)
    cout << "\n\nНовая размерность второго массива: " << NB << endl;
    cout << "Новый вид массива: " << endl;
    for (int i = 0; i < NB; i++)
    {
        cout << B[i] << " ";
    }
 
    DoubleX(C, NC, XC);                   // ф-я дублирования (указание на массив, длины, числа дублирования)
    cout << "\n\nНовая размерность третьего массива: " << NC << endl;
    cout << "Новый вид массива: " << endl;
    for (int i = 0; i < NC; i++)
    {
        cout << C[i] << " ";
    }
    cout << "\n";
    delete[] A;                                        // высвобождение динамической памяти  
    delete[] B;
    delete[] C;
    return 0;                                                      // возвращаем значение функции 0
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2022, 17:27
Помогаю со студенческими работами здесь

Дублирование элементов ListView
У меня есть ListView во фрагменте, при нажатии на определенный элемент открывает диалоговое окно с...

Дублирование базы , или дублирование информациии
Доброго времени суток ! Поставлена задача: мне нужно либо при изменении или добавлении данных...

Одномерный массив. Дублирование элементов
Дан массив размера N. 1. Продублировать в нем элементы, кратные натуральному числу К. 2....

Дублирование элементов Select в input
Добрый вечер коллеги. Столкнулся с проблемой следующего рода: Есть два объекта Select, а именно...

Как устранить дублирование вывода массива?
дублируется массив выбирая: &quot;If you want to have data automatically, Enter 2 &quot; (Генерация чисел ) ...

Двусвязные списки: дублирование некоторых элементов
Функция duplicate раньше дублировала каждый элемент списка, но по условию задачи мне нужно, чтобы...


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

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

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