Ho rivisto il codice con maggiore calma ed effettivamente c'era qualche errore... Ora l'ho compilato e testato... Ci sono poche funzioni e concetti che credo ti serva imparare... puntatori, malloc, realloc e sizeof....
Avremmo potuto renderla molto piu' facile allocando con delle dimensioni fisse gli array ma non avremmo ottenuto la flessibilita' di realizzare un programma che vada bene per un qualsiasi set di input...
#include <stdio.h>
#include <stdlib.h>
int main(){
int size1, size2, size3, i, j, k = 0;
int *vett1, *vett2, *vett3 = NULL; //NULL e' una parola chiave per indicare che un puntatore non punta a nulla
printf("Inserisci il numero di valori del PRIMO vettore -->\n");
scanf("%d", &size1);
if(size1 <= 0){
printf("Valore non congruo\nUscita\n");
exit(EXIT_FAILURE); //"EXIT FAILURE" e' una costante definita nella stdlib.h per indicare al programma di uscire con errore
}
vett1 = (int*)malloc(size1*sizeof(int)); //malloc e' una funzione definita in stdlib.h e sizeof e' un operatore unario del C che restituisce il numero di byte di un dato tipo?
printf("Inserisci il numero di valori del SECONDO vettore -->\n");
scanf("%d", &size2);
if(size2 <= 0){
printf("Valore non congruo\nUscita\n");//è una verifica?
exit(EXIT_FAILURE);
}
vett2 = (int*)malloc(size2*sizeof(int));
printf("\nIl PRIMO vettore avra' %d celle, mentre il SECONDO vettore ne avra' %d\n\n", size1, size2);
for (i=0; i<size1; i++){
printf("Inserisci il valore che avra' la cella numero %d del PRIMO vetore: ", i);
scanf("%d", &vett1[i]);
printf("\n");
}
for (j=0; j<size2; j++){
printf("Inserisci il valore che avra' la cella numero %d del SECONDO vetore: ", j);
scanf("%d", &vett2[j]);
printf("\n");
}
for (i=0; i<size1; i++){
for (j=0; j <size2; j++){
if (vett1[i] == vett2[j]){
if(k == 0) vett3 = (int*)malloc(sizeof(int));
else vett3 = (int*)realloc(vett3,(sizeof(vett3)/sizeof(int))+sizeof(int));
vett3[k] = vett1[i];
k++;
}
}
}
size3 = sizeof(vett3)/sizeof(int);
printf("Ecco i valori del terzo vettore:\n");
for (k=0; k<size3; k++){
printf("Il valore del TERZO vettore nella cella %d equivale ad --> %d\n", k, vett3[k]);
}
return 0;
}