Massimo e minimo tra 4 numeri (C)

di il
8 risposte

Massimo e minimo tra 4 numeri (C)

Sera a tutti.
Lo so, lo so...ci sono decine di modi più furbi e veloci per farlo, ma mi sono incaponito con un esercizio e penso possa essere "didattico" riuscire a risolverlo. Il testo chiede di trovare il massimo e il minimo fra 4 numeri interi positivi inseriti dall'utente, utilizzando una catena di QUATTRO if. A questo punto del libro non si presuppone io conosca gli array, i cicli e chi più ne ha più ne metta. Solo if else. Qualcuno ha qualche idea? Non riesco a non usarne più di 4...

8 Risposte

  • Re: Massimo e minimo tra 4 numeri (C)

    Proponi il codice con cui lavori su 3 interi.
    suggerrimento: oltre alle 3 variabili a1 a2 e a3 definisci anche max e min che inizializzi con a1...
    vedrai che dato n il numero di valori per il minimo ti servono n-1 test e stessa cosa per il massimo
  • Re: Massimo e minimo tra 4 numeri (C)

    #include <stdio.h>
    
    int main() {
    
        int n1, n2, n3, n4, max, min;
    
        printf("Enter four integers: ");
        scanf("%d %d %d %d", &n1, &n2, &n3, &n4);
        
        max = n1;
    
        if ((n2 > max) && (n2 >n3) && (n2>n4)) max = n2;
        if ((n3>max) && (n3>n2) && (n3>n4)) max = n3;
        if ((n4>max) && (n4>n2) && (n4>n3)) max = n4;
    
        min = n1;
    
        if ((n2<min) && (n2<n3) && (n2<n4)) min = n2;
        if ((n3<min) && (n3<n2) && (n3<n4)) min = n3;
        if ((n4<min) && (n4<n2) && (n4<n3)) min = n4;
    
        printf("Largest: %d\nSmallest: %d\n", max, min);
    
        return 0;
    }
    mi ero fissato che con 4 if potevo fare sia il massimo che il minimo, il testo del libro era un po' vago. Ma effettivamente credo che questa sia la soluzione più concisa possibile, grazie dei suggerimenti
  • Re: Massimo e minimo tra 4 numeri (C)

    Ma non è più ovvio così ?

    max = n1;

    if (n2 > max) max = n2;
    if (n3 > max) max = n3;
    if (n4 > max) max = n4;
  • Re: Massimo e minimo tra 4 numeri (C)

    Semplifichiamo e immaginiamo di dover trovare solo il minimo (per il massimo basterà copiare il ragionamento).
    Immagina di avere un filtro, un setaccio, come i cercatori d'oro.
    Passiamo al setaccio i 4 valori, uno alla volta.
    Il setaccio fa passare solo se il valore è minore del minore corrente; quando un valore passa il setaccio aggiorniamo il minimo corrente.
    Per iniziare consideriamo che il primo valore sia il minimo:
    min=a1;
    Passiamo il primo valore:
    if(a2<min)
    min=a2;
    ...
    Prosegui tu
    EDIT: ooops Oregon mi hai preceduto; permettimi di lasciare il mio post perchè mi sembra possa aiutare l'OP
  • Re: Massimo e minimo tra 4 numeri (C)

    Mi sono svegliato mezz'ora fa e avevo smania di fare test inutili, era decisamente ovvio. Grazie a entrambi
  • Re: Massimo e minimo tra 4 numeri (C)

    Figurati candaluar ...!

    Mi sembrava tanto evidente che le 3 righe le ho suggerite ...
  • Re: Massimo e minimo tra 4 numeri (C)

    skelter94 ha scritto:


    Mi sono svegliato mezz'ora fa
    Beato te
  • Re: Massimo e minimo tra 4 numeri (C)

    candaluar ha scritto:


    skelter94 ha scritto:


    Mi sono svegliato mezz'ora fa
    Beato te
    mmh non ti credere, pagherei per avere le lezioni di mattina invece che fino alle 8 di sera...ma stiamo divagando
Devi accedere o registrarti per scrivere nel forum
8 risposte