1

Тема: Заповнення масиву однаковими значеннями Сі

Доброго дня! Є завдання — "Дано два масиви A і B однакового розміру N. Сформувати новий масив C того ж розміру, кожен елемент якого дорівнює максимальному з елементів масивів A і B з тим самим індексом."
Як мені заповнити масив С найбільшим значеннями? Я можу виділити під кожен індекс максимальне значення з пари.
Наприклад:

A: 41 85 72 38 80 69 65 68 96 22
B: 49 67 51 61 63 87 66 24 80 83
C: 49 85 72 61 80 87 66 68 96 83

А як заповнити С лише "самим" максимальним значенням з двох масивів? У даному випадку це має бути 96. Тобто у результаті:

A: 41 85 72 38 80 69 65 68 96 22
B: 49 67 51 61 63 87 66 24 80 83
C: 96 96 96 96 96 96 96 96 96 96

Поки що код маю такий:

printf("Enter the number of elements: ");
            scanf("%d", &elementsNumber);
            int aArray[elementsNumber], bArray[elementsNumber], cArray[elementsNumber];

            for (i = 0; i < elementsNumber; i++)
            aArray[i] = rand() % 101;

            printf("\nA: ");
            for (i = 0; i < elementsNumber; i++){
            printf("%d ", aArray[i]);
        }
            for (i = 0; i < elementsNumber; i++)
            bArray[i] = rand() % 101;

            printf("\nB: ");
            for (i = 0; i < elementsNumber; i++){
            printf("%d ", bArray[i]);  
        }
        for(i = 0; i < elementsNumber; i++){
            if(aArray[i] >= bArray[i]){
                cArray[i] = aArray[i];
            }else if(bArray[i] >= aArray[i]){
                cArray[i] = bArray[i];
            }
            maxElement = cArray[0];
            if (cArray[i] > cArray[maxElement]){
                    maxElement = cArray[i];
                }   
            }
        
        printf("\nC: ");
        for (i = 0; i < elementsNumber; i++){
            printf("%d ", cArray[maxElement]);
        }

2

Re: Заповнення масиву однаковими значеннями Сі

Ви неправильно прочитали умову і вже все зробили.

Trap_o написав:

елемент якого дорівнює максимальному з елементів масивів A і B з тим самим індексом

Тобто елемент з індексом i (C[i]) має дорівнювати максимальному з A[i] та B[i]. Точно як у вас.

Якщо ж ви хочете зробити так, як ви описали, то вам треба спершу знайти максимальний елемент в обох масивах A та B, а потім, в окремому циклі, заповнити ним усі елементи масиву C.

Ну і в else можна вже не перевіряти умову. Якщо aArray[i] >= bArray[i] не виконується, то точно виконуватиметься bArray[i] >= aArray[i]. Без варіантів.

Подякували: Trap_o1

3

Re: Заповнення масиву однаковими значеннями Сі

koala написав:

Ви неправильно прочитали умову і вже все зробили.

Trap_o написав:

елемент якого дорівнює максимальному з елементів масивів A і B з тим самим індексом

Тобто елемент з індексом i (C[i]) має дорівнювати максимальному з A[i] та B[i]. Точно як у вас.

Якщо ж ви хочете зробити так, як ви описали, то вам треба спершу знайти максимальний елемент в обох масивах A та B, а потім, в окремому циклі, заповнити ним усі елементи масиву C.

Ну і в else можна вже не перевіряти умову. Якщо aArray[i] >= bArray[i] не виконується, то точно виконуватиметься bArray[i] >= aArray[i]. Без варіантів.

Дякую за підказку, зрозумів в чому помилка була

4

Re: Заповнення масиву однаковими значеннями Сі

?

#include <iostream>
#include <array>
#include <algorithm>

constexpr int n = 10;

int main() {
  const std::array<int, n> a = {41, 85, 72, 38, 80, 69, 65, 68, 96, 22};
  const std::array<int, n> b = {49, 67, 51, 61, 63 ,87 ,66 ,24 ,80 ,83};

   std::array<int,n> c;
   for (int i =0; i<n; i++){
      c[i] = std::max(a[i], b[i]);
   }

   int max_val = *std::max_element(c.begin(), c.end());

   std::fill(c.begin(), c.end(), max_val);

   std::cout << "Array c: ";
   for (auto i : c) {
     std::cout << i << " ";
   }
   std::cout << std::endl;

   return 0;
}