Sìsì, è quello. Ri-posto tutto nuovamente:
main.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "unione.h"
#include "allocazione.h"
int main()
{
allocazione_dinamica();
return 0;
}
allocazione.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void allocazione_dinamica();
allocazione.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "allocazione.h"
void allocazione_dinamica()
{
int a, b, a_piu_b, i, j, *A, *B, *U;
printf("a: "); scanf("%d", &a);
printf("b: "); scanf("%d", &b);
a_piu_b = a + b;
//Allocazione dinamica della memoria
A = (int *) malloc (a * sizeof(int));
B = (int *) malloc (b * sizeof(int));
//Caricamento dei vettori, modalità RANDOM
for(i = 0; i < a; i++)
A[i] = rand()%10;
for(j = 0; j < b; j++)
B[i] = rand()%10;
//Stampa dei vettori prima dell'unione
printf("Array prima di essere uniti: \n");
for(i = 0; i < a; i++)
printf("A[%d] = %d\n", i, A[i]);
printf("\n");
for(j = 0; j < b; j++)
printf("B[%d] = %d\n", j, B[j]);
//Invocazione della funzione unione
U = unione(A, a, B, b, &a_piu_b);
printf("Array unito: \n");
for(i = 0; i < a_piu_b; i++)
printf("U[%d] = %d\n", i, U[i]);
}
unione.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int* unione(int A[], int nA, int B[], int nB, int* sizeResult);
unione.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "unione.h"
int* unione(int A[], int nA, int B[], int nB, int* sizeResult)
{
int i, j, riempito = 0, *U; //array di unione
//Allocazione dinamica del vettore unione U
U = (int*) malloc (*sizeResult * sizeof(int));
//Caricamento del vettore
for(i = 0; i < nA; i++)
{
U[i] = A[i];
riempito++;
}
for(i = 0; i < nB; i++)
{
U[riempito] = B[i];
riempito++;
}
printf("\n");
return U;
}
makefile.txt
main.o:
gcc -c main.c
allocazione:
gcc -c allocazione.c
unione.o:
gcc -c unione.c
eseguibile: main.o unione.o
gcc -o main.o unione.o
exe:
gcc -o exe main.c unione.c allocazione.c
clean:
rm -fr exe
davide@...:~/Scrivania/Esercizio 8$ make -f makefile.txt exe
gcc -o exe main.c unione.c allocazione.c
allocazione.c: In function ‘allocazione_dinamica’:
allocazione.c:37:4: warning: assignment makes pointer from integer without a cast [enabled by default]
U = unione(A, a, B, b, &a_piu_b);
^