Scrivere un sottoprogramma che riceve come parametri un array di
interi a e la sua dimensione dim. Il sottoprogramma copia in un
secondo array b i numeri pari contenuti in a; si noti che b deve
essere allocato dinamicamente delle dimensioni strettamente
necessarie per contenere i numeri pari. Infine il sottoprogramma
trasmette al chiamante b e la sua dimensione. Gestire opportunamente
gli eventuali errori di allocazione della memoria trasmettendo una
dimensione dell'array allocato pari a -1.
Scrivere un programma che chiede all'utente 10 valori interi da
salvare in un array. Il programma invoca il sottoprogramma sopra
definito e ne visualizza il risultato. Infine il programma libera la
memoria allocata. Gestire opportunamente gli eventuali errori di
allocazione della memoria.
Ho scritto questo programma e volevo se fosse giusto.
Grazie in anticipo.
interi a e la sua dimensione dim. Il sottoprogramma copia in un
secondo array b i numeri pari contenuti in a; si noti che b deve
essere allocato dinamicamente delle dimensioni strettamente
necessarie per contenere i numeri pari. Infine il sottoprogramma
trasmette al chiamante b e la sua dimensione. Gestire opportunamente
gli eventuali errori di allocazione della memoria trasmettendo una
dimensione dell'array allocato pari a -1.
Scrivere un programma che chiede all'utente 10 valori interi da
salvare in un array. Il programma invoca il sottoprogramma sopra
definito e ne visualizza il risultato. Infine il programma libera la
memoria allocata. Gestire opportunamente gli eventuali errori di
allocazione della memoria.
C:
#include <stdio.h>
#include <stdlib.h>
#define MAX 3
int* numeri_pari(int array[], int dim, int *dim_pari);
int main(){
int array[MAX], i, *a, dim_pari=0;
printf("inserire valori:\n");
for(i=0; i<MAX; i++){
scanf("%d", &array[i]);
}
a=numeri_pari(array, MAX, &dim_pari);
for(i=0; i<dim_pari; i++){
printf("%d\n", *(a+i));
}
return 0;
}
int* numeri_pari(int array[], int dim, int *dim_pari){
int i, j=0, *p;
for(i=0; i<dim; i++){
if(array[i]%2==0)
(*dim_pari)++;
}
p=malloc(sizeof(int)*(*dim_pari));
if(p){
for(i=0; i<dim || j!=(*dim_pari); i++){
if(array[i]%2==0){
*(p+j)=array[i];
j++;
}
}
return p;
free(p);
}
else{
printf("Err. Malloc\n");
*dim_pari = -1;
}
}
Grazie in anticipo.