
С++ Задано два масиви цілих чисел A(n), n = 40 і B(m), m = 15 . Обчислити сумуоб’єднання AUB .
Об’єднання AUB – це множина елементів масиву A і B , взятих по одному разу. Вивести елементи об’єднання та їх суму.Виконати завдання використовуючи динамічну пам’ять та вказівники на неї. До елементів масиву звертатись за допомогою вказівників.

Ответы на вопрос

Відповідь:
C++ code:
#include <iostream>
#include <cstdlib>
#include <ctime>
typedef unsigned int sz;
void rand_arr(int *arr,const sz size){
for(sz i = 0; i < size; i++){
*(arr + i) = rand() % 20 + 1;
}
}
void print_arr(int *arr,const sz size){
for(sz i = 0; i < size; i++){
std::cout << *(arr + i) << " ";
}
std::cout << std::endl;
}
int sum_arr(int *arr,const sz size){
int sum = 0;
for(sz i = 0; i < size; i++){
sum += *(arr + i);
}
return sum;
}
int main(){
srand(time(NULL));
const sz n = 40,m = 15;
int *A = new int[n];
int *B = new int[m];
rand_arr(A,n);
rand_arr(B,m);
std::cout << "A: " << std::endl;
print_arr(A,n);
std::cout << "B: " << std::endl;
print_arr(B,m);
sz c = n + m;
int *C = new int[c];
for(sz i = 0; i < n; i++){
*(C + i) = *(A + i);
}
for(sz i = n, j = 0; i < c; i++, j++){
*(C + i) = *(B + j);
}
std::cout << "C: " << std::endl;
print_arr(C,c);
std::cout << "Sum: " << sum_arr(C,c) << std::endl;
delete[] A;
delete[] B;
delete[] C;
return 0;
}



Ось приклад реалізації завдання на C++:
cpp#include <iostream>
int* mergeArrays(int* arrayA, int sizeA, int* arrayB, int sizeB, int& sizeC)
{
int* arrayC = new int[sizeA + sizeB]; // Виділення пам'яті для об'єднаного масиву
// Копіюємо елементи з масиву A
for (int i = 0; i < sizeA; i++)
{
arrayC[i] = arrayA[i];
}
// Копіюємо елементи з масиву B, якщо вони ще не містяться в об'єднаному масиві
for (int i = 0; i < sizeB; i++)
{
bool isDuplicate = false;
for (int j = 0; j < sizeA; j++)
{
if (arrayB[i] == arrayA[j])
{
isDuplicate = true;
break;
}
}
if (!isDuplicate)
{
arrayC[sizeA++] = arrayB[i];
}
}
sizeC = sizeA; // Розмір об'єднаного масиву
return arrayC;
}
int main()
{
int sizeA = 40;
int sizeB = 15;
int* arrayA = new int[sizeA];
int* arrayB = new int[sizeB];
// Заповнюємо масив A цілими числами (для прикладу використовуємо значення від 1 до 40)
for (int i = 0; i < sizeA; i++)
{
arrayA[i] = i + 1;
}
// Заповнюємо масив B цілими числами (для прикладу використовуємо значення від 1 до 15)
for (int i = 0; i < sizeB; i++)
{
arrayB[i] = i + 1;
}
int sizeC = 0;
int* arrayC = mergeArrays(arrayA, sizeA, arrayB, sizeB, sizeC);
// Виводимо елементи об'єднаного масиву
std::cout << "Об'єднання AUB: ";
for (int i = 0; i < sizeC; i++)
{
std::cout << arrayC[i] << " ";
}
std::cout << std::endl;
// Обчислюємо суму елементів об'єднаного масиву
int sum = 0;
for (int i = 0; i < sizeC; i++)
{
sum += arrayC[i];
}
std::cout << "Сума елементів об'єднання: " << sum << std::endl;
// Звільняємо пам'ять
delete[] arrayA;
delete[] arrayB;
delete[]


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili