Proszę zadanie w c++
Napisz funkcję, która otrzymuje cztery argumenty: dodatnią liczbę całkowitą n,
n-elementowe tablice tab1 i tab2 oraz 2*n-elementową tablice tab3 o elementach typu
double.
a) Funkcja powinna przepisywać zawartość tablic tab1 i tab2 do tablicy tab3 w taki
sposób, ze na początku tablicy tab3 powinny się znaleźć elementy tablicy tab1, a po
nich elementy tablicy tab2.
b) Funkcja powinna przepisywać zawartość tablic tab1 i tab2 do tablicy tab3 w taki
sposób, ze w komórkach tablicy tab3 o nieparzystych indeksach powinny się znaleźć
elementy tablicy tab1, a w komórkach tablicy tab3 o parzystych indeksach elementy
tablicy tab2.


Odpowiedź :

Odpowiedź:

#include <iostream>

#include <algorithm>

//a)

void fun1(unsigned int n, const double tab1[], const double tab2[], double tab3[]) { //funkcja void

   for (int i = 0; i < n; i++) {

       tab3[i] = tab1[i]; //do pierwszej polowy zapisujemy wartosci z tab1

       tab3[n + i] = tab2[i]; //do drugiej z tab2

   }

}

void fun2(unsigned int n, const double tab1[], const double tab2[], double tab3[]) { //funkcja b)

   int k = 0; //zmienna do uzupełniania parzystych

   int j = 0; //zmienna do uzupełniania nieparzystych

   for (int i = 0; i < 2 * n; i++) {

       if (i % 2 == 0) {

           tab3[i] = tab1[k];

           k++;

       } else {

           tab3[i] = tab2[j];

           j++;

       }

   }

}

int main() {

   unsigned int n; //zmienna dodatnia

   std::cin >> n; //podajemy n

   auto *tab1 = new double[n]; //tablice dynamiczne (o wielkości wprowadzanej z klawiatury)

   auto *tab2 = new double[n];

   auto *tab3 = new double[2 * n];

   for (int i = 0; i < n; i++) { //uzupełniamy tab1 i tab2

       tab1[i] = i;

       tab2[i] = n + i;

   }

   

   fun1(n, tab1, tab2, tab3); //wywołanie funkcji a)

   fun2(n, tab1, tab2, tab3); //wywołanie funkcji b)

   std::for_each(tab3, tab3 + 2 * n, [](const auto &a) { std::cout << a << std::endl; }); //wyświetlenie tab3

   

   delete [] tab1; //usunięcie tablic dynamicznych

   delete [] tab2;

   delete [] tab3;

   

   return 0;

}

Wyjaśnienie:

W komentarzach masz wytłumaczenie. Mogłem to też zrobić na vectorach, ale użyłem tablic dynamicznych. Oczywiście obie funkcje są wywołane jednocześnie, więc na ekranie wyświetli się działanie funkcji b). Dlatego jak chcesz przetestować działanie oby funkcji, to wywołuj je POJEDYNCZO