9abs
12-02-2020, 19:15
Volevo solo chiedere un'occhiata al codice e delle eventuali correzioni sull'allocazione dinamica..poichè un po insicuro sull'argomento.
Ecco il codice..sembra funzioni.
#include <stdio.h>
#include <stdlib.h>
int* carica(int* c);
int* negativi(int* A,int n,int* c);
int* pari(int* A,int n,int* c);
int main(){
int* A;
int* B;
int i,n;
int* c=&n;
A=carica(c); //carico vett
printf("stampo vettore dopo la carica\n");
for(i=0;i<n;i++) //stampo vett
printf("%d\n",*(A+i));
printf("stampo vettore dopo la f pari\n");
B=pari(A,n,c);
for(i=0;i<n;i++) //stampo vett
printf("%d\n",*(B+i));
free(A);
free(B);
}
//----------------------------------------xmalloc per all.dinamica
void* xmalloc(int n){
void* A;
A=malloc(n * sizeof(int));
if(A==NULL)
fprintf(stderr,"errore durante l'allocazione\n");
return A;
}
//---------------------------------------carica un vettore
int *carica(int *c){
int* A;
int i;
int n;
printf("quanti elementi vuoi inserire?\n");
scanf("%d",&n);
A=xmalloc(n);
for(i=0;i<n;i++)
scanf("%d",A+i);
*c=n;
return A;
}
//----------------------------------cerco i numeri pari
int* pari(int A[],int n,int* c){
int i,j;
int* B;
int count=0;
for(i=0;i<n;i++){
if(A[i]%2==0)
count++;
}
*c=count;
B=xmalloc(count);
j=0;
for(i=0;i<n;i++){
if(A[i]%2==0){
B[j]=A[i];
j++;
}
}
return B;
}
spero sia stato indentato decentemente. Grazie per l'aiuto!
Ecco il codice..sembra funzioni.
#include <stdio.h>
#include <stdlib.h>
int* carica(int* c);
int* negativi(int* A,int n,int* c);
int* pari(int* A,int n,int* c);
int main(){
int* A;
int* B;
int i,n;
int* c=&n;
A=carica(c); //carico vett
printf("stampo vettore dopo la carica\n");
for(i=0;i<n;i++) //stampo vett
printf("%d\n",*(A+i));
printf("stampo vettore dopo la f pari\n");
B=pari(A,n,c);
for(i=0;i<n;i++) //stampo vett
printf("%d\n",*(B+i));
free(A);
free(B);
}
//----------------------------------------xmalloc per all.dinamica
void* xmalloc(int n){
void* A;
A=malloc(n * sizeof(int));
if(A==NULL)
fprintf(stderr,"errore durante l'allocazione\n");
return A;
}
//---------------------------------------carica un vettore
int *carica(int *c){
int* A;
int i;
int n;
printf("quanti elementi vuoi inserire?\n");
scanf("%d",&n);
A=xmalloc(n);
for(i=0;i<n;i++)
scanf("%d",A+i);
*c=n;
return A;
}
//----------------------------------cerco i numeri pari
int* pari(int A[],int n,int* c){
int i,j;
int* B;
int count=0;
for(i=0;i<n;i++){
if(A[i]%2==0)
count++;
}
*c=count;
B=xmalloc(count);
j=0;
for(i=0;i<n;i++){
if(A[i]%2==0){
B[j]=A[i];
j++;
}
}
return B;
}
spero sia stato indentato decentemente. Grazie per l'aiuto!