Numerii!

di il
3 risposte

Numerii!

Devo trovare the second number più grande all'interno di questo programma
#include <stdio.h>
#include <stdlib.h>


int max2(int v[],int n);
main()
{
int v[10],i,tot,elemento;
 printf("inserire i 10 numeri\n");
 for (i=0;i<10;i++)
 scanf("%d",&v[i]);
 elemento=max2(v,10);
 printf("\n2 numero \x8A:%d",elemento);

}
int max2(int v[],int n)
{
    int grande,i,max2;
   grande=v[0];
    max2=v[0];
 for (i=0;i<10;i++)
    if (v[i]>grande)
 grande=v[i];
 printf("\nil primo numero più grande \x8A:%d",grande);
 for (i=0;i<10;i++)
 if(v[i]>max2 && max2!=grande)
   max2=v[i];
    printf("\nil secondo più grande \x8A:%d",max2);
    return max2;
    }
avevo pensato a qualcosa del genere ma quando lo eseguo non mi dice chi è il secondo
sarà sicuramente sbagliata la logica all'interno dell if

3 Risposte

  • Re: Numerii!

    Inizia con il NON RICHIEDERE i valori del vettore da tastiere, ma usa direttamente un vettore scritto nel codice.

    Cosi' puoi seguire meglio il ragionamento

    POI, quando il prog funzionera' correttamente, potrai richiedere i da ti da tastiera
  • Re: Numerii!

    #include <stdio.h>
    int max2(int v[],int n);
    main()
    { int i,n,v[10],numero;
    printf("quanti elementi vuoi inserire?:");
    scanf("%d",&n);
    printf("\ninserire gli elementi\n");
    for (i=0;i<n;i++)
        scanf("%d",&v[i]);
    numero=max2(v,n);
    printf("\nmax2=%1d",numero);
    
    }
    int max2(int v[],int n)
    {
     int i,max,max2;
     max=v[0];
     max2=v[0];
     for (i=0;i<n;i++)
        if (v[i]>max)
     {
         max2=max;
         max=v[i];
     }
     return max2;
    }
    
    ho usato questa logica ossia ho impostato
    che se il numero è maggiore di max (inizializzato con il primo indirizzo di v[0])
    allora il max2 diventa il massimo
    il massimo corrisponde al numero
  • Re: Numerii!

    Dopo a
    
    if (v[i]>max) {
        max2=max;
        max=v[i];
    }
    
    aggiungi
    
    else if(v[i] > max2) {
        max2 = v[i];
    }
    
    Perché se ad esempio hai il vettore 1 3 2, alla fine dell'iterazione con 3 max sarà 3 e max2 1; all'iterazione successiva la condizione dentro if non è verificata e nulla dice a max2 di memorizzare il 2 con la tua versione del programma
Devi accedere o registrarti per scrivere nel forum
3 risposte