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