Salve, mi é stato dato il seguente esercizio:
Scrivere una funzione , trovaMassimo, che, dato un array di interi V restituisca il puntatore all’ element odell’ array
che contiene il massimo.Scrivere un main che 1)crei l ’array V; 2) trovi il puntatore al massimo 4) Stampi il valore massimo. Fornire una soluzione della funzione trovaMassimosia iterativa sia ricorsiva.
Questo é il mio codice
Anche il free alla fine mi crea problemi
#include <stdio.h>
#include <stdlib.h>
int CreaVettore(int *v,int n);
int* TrovaMaxIT(int *v,int n);
int* TrovaMaxRic(int *v, int n);
int main()
{
int *v,*maxN,*maxR;
int n;
n=CreaVettore(v,n);
maxN=TrovaMaxIT(v,n);
maxR=TrovaMaxRic(v,n);
printf("Indirizzo del massimo trovato in maniera iterativa=%p\n",maxN);
printf("Il massimo trovato in maniera iterativa é %d\n",*maxN);
printf("Indirizzo del massimo trovato in maniera ricorsiva=%p\n",maxR);
printf("Il massimo trovato in maniera ricorsiva é %d",*maxR);
free(v);
return 0;
}
int CreaVettore(int *v,int n){
int i;
printf("Quanti numeri vuoi inserire:");
scanf("%d",&n);
if(n==0){
printf("Array vuoto!");
return n;
}
v=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++){
printf("Inserire v[%d]:",i);
scanf("%d",&v[i]);
}
return n;
}
int* TrovaMaxIT(int *v, int n){
int *maxN=&v[0];
int i,max=v[0];
for(i=0;i<n;i++){
if(v[i]>max){
max=v[i];
maxN=&v[i];
}
}
return maxN;
}
int* TrovaMaxRic(int *v, int n){
int *maxR=&v[0];
int i,max=v[0];
if(n==1) {
maxR=&v[0];
max=v[0];
}
else{
maxR=TrovaMaxRic(v,n-1);
if(v[n-1]>max){
max=v[n-1];
maxR=&v[n-1];
}
}
return maxR;
}
Grazie in anticipo