Učešljavanje nizova
Neka su data dva niza celih brojeva veličine
Ulaz
Sa standardnog ulaza se učitava broj elemenata niza
Izlaz
Na standardni izlaz ispisati niz dobijen učešljavanjem prva dva.
Primer
Ulaz
10
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
Izlaz
0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9
Rešenje
main.c
#include <stdio.h>
#include <stdlib.h>
int *interleave(const int *arr1, const int *arr2, int n)
{
int *res = malloc(2 * n * sizeof (int));
if (res == NULL) {
free(arr1);
free(arr2);
exit(EXIT_FAILURE);
}
int *out = res;
for (size_t i = 0; i < n; i++) {
*out = arr1[i]; out++;
*out = arr2[i]; out++;
}
return res;
}
int main(void)
{
size_t n;
scanf("%zu", &n);
int *arr1 = malloc(n * sizeof (int));
if (arr1 == NULL) {
exit(EXIT_FAILURE);
}
int *arr2 = malloc(n * sizeof (int));
if (arr2 == NULL) {
free(arr1);
exit(EXIT_FAILURE);
}
for (size_t i = 0; i < n; i++) {
scanf("%d", &arr1[i]);
}
for (size_t i = 0; i < n; i++) {
scanf("%d", &arr2[i]);
}
int *out = interleave(arr1, arr2, n);
for (size_t i = 0; i < 2 * n; i++) {
printf("%d ", out[i]);
}
printf("\n");
free(arr1);
free(arr2);
free(out);
exit(EXIT_SUCCESS);
}