Aiuto esercizio

di il
3 risposte

Aiuto esercizio

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

3 Risposte

  • Re: Aiuto esercizio

    Attenzione, in CreaVettore hai passato una copia del puntatore v.
  • Re: Aiuto esercizio

    Ok, ho corretto e funziona quasi perfettamente. Solo la parte ricorsiva da ancora qualch problema
  • Re: Aiuto esercizio

    Space V1 ha scritto:


    Ok, ho corretto e funziona quasi perfettamente. Solo la parte ricorsiva da ancora qualch problema
    Vedi bene la condizione nel secondo if.
Devi accedere o registrarti per scrivere nel forum
3 risposte