Ho svolto 3 problemi su funzioni ricorsive con array, nessuno dei quali funziona, ma non capico quale siano gli errori, che evidentemente sono dati da un'errata comprensione del metodo. spero qualcuno riesca a correggermi.
1)scrivere una funzione che riceve un array di interi e restituisce il minimo.
2)scrivere una funzione ricorsiva che riceve un array di interi e restituisce 1 se gli elementi sono tutti dispari e 0 se non li sono.
3)scrivere una funzione ricorsiva che riceve un array di interi e restituisce il prodotto degli elementi negativi.
1)#include<stdio.h>
#include<stdlib.h>
int minore(int n,int *a);
int main(){
int i,n,min=0;
printf("inserisci il numero di elementi dell'array: ");
scanf("%d",&n);
int a[100]={0};
for(i=0;i<n;i++){
printf("inserisci l'elemento n.%d: ",i+1);
scanf("%d",&a);
}
min=minore(n,a);
printf("il minore \212: %d\n",min);
system("pause");
return 0;
}
int minore(int n,int *a){
int min=0;
if(n==0)return 0;
if(n==1) min=a[n-1];
else{
if(a[n-1]<min) min=a[n-1];
else min=minore(a,n-1);
}
return min;
}
2)
#include<stdio.h>
#include<stdlib.h>
int funzionedispari(int n, int *a);
int main(){
int n,i,d=0;
printf("inserisci il numero di elementi dell'array: ");
scanf("%d",&n);
int a[100]={0};
for(i=0;i<n;i++){
printf("inserisci un numero: ");
scanf("%d",&a);
}
d=funzionedispari(n,a);
printf("%d",d);
system("pause");
return 0;
}
int funzionedispari(int n, int *a){
int d=0;
if(n==0) return 0;
if(a[n-1]>0) return d;
if(a[n-1]<0&&funzionedispari(a,n-1)<0){
d=1;
return d;
}
}
3)
#include<stdio.h>
#include<stdlib.h>
int prodottonegativi(int n, int a[]);
int main(){
int i,p,n=0;
printf("inserisci il numero di elementi dell'array: ");
scanf("%d",&n);
int a[100]={0};
for(i=0;i<n;i++){
printf("inserisci l'elemento n.%d: ",i+1);
scanf("%d",&a);
}
p=prodottonegativi(n,a);
printf("il prodotto \212: %d\n",p);
system("pause");
return 0;
}
int prodottonegativi(int n, int a[]){
int p=1;
if(n==0) return 0;
else{
if(a[n-1]<0) p=p*a[n-1]*prodottonegativi(a,n-1);
else p=p*prodottonegativi(a,n-1);
}
return p;
}
tutti e tre i programmi presentano queste avvertenze:
[Warning] passing argument of '' makes pointer from integer without a cast
expected 'int *' but argument is of type 'int'
grazie in anticipo dell'aiuto.