Esercizio if-else

di il
4 risposte

Esercizio if-else

Salve a tutti
Sono nuovo del forum ed ho iniziato da poco a studiare la programmazione in particolare quella con il linguaggio C.
Vorrei se possibile un aiuto nel risolvere il seguente esercizio: leggere sei numeri da tastiera e visualizzarli in ordine crescente.
Però devo risolverlo facendo uso della sola struttura di controllo if-else.
Ho provato a seguire un ragionamento che mi ha portato alla stesura del codice;ovvero ho confrontato dapprima i primi tre numeri inseriti,ordinandoli in modo crescente ed successivamente ho confrontato i restanti tre numeri.Alla fine confronto tra loro il valore massimo,minimo e intermedio delle rispettive terne e stampo a video ciò che ottengo.
In altre parole mi ordino la prima terna di numeri poi mi metto in ordine la seconda terna di numeri ed alla fine confronto le due terne tra loro.
Riporto il codice in C:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int max,min,inter,max1,min1,inter1,tempo;
   printf("\nInserisci i sei numeri:");
   scanf("%d%d%d%d%d%d",&max,&min,&inter,&max1,&min1,&inter1);
   //ordino la prima terna
   
   if(min>max)  {
                   tempo=min;
                   min=max;
                   max=tempo;
                 }
    if(inter>max){
                   tempo=inter;
                   inter=max;
                   max=tempo;
                  }

    if (inter<min)
                 {
                  tempo=inter;
                  inter=min;
                  min=tempo;
                 }
                 
     //ordino la seconda terna
                 
    if(min1>max1){
                   tempo=min1;
                   min1=max1;
                   max1=tempo;
                 }
    if(inter1>max1){
                     tempo=inter1;
                     inter1=max1;
                     max1=tempo;
                    }
    if(inter1<min1){
                     tempo=inter1;
                     inter1=min1;
                     min1=tempo;
                   }
                   
    //ordino le due terne di numeri
    
    if(min>min1){
                  tempo=min1;
                  min1=min;
                  min=tempo;
                }
     if(max>max1){
                  tempo=max1;
                  max1=max;
                  max=tempo;
                 }
      if(inter>inter1){
                        tempo=inter1;
                        inter1=inter;
                        inter=tempo;
                      }
     //comunico i risultati
     printf("\nI sei numeri ordinati sono: %d %d %d %d %d %d",min,inter,max,min1,inter1,max1);
     printf("\n\n");
     return 0;
 }
La compilazione del codice va bene,per quanto riguarda il suo funzionamento invece va bene per numeri piccoli però poi appena inserisco numeri un po più grandi succede il disastro
Attendo il vostro prezioso aiuto e nel farlo vi ringrazio anticipatamente

4 Risposte

  • Re: Esercizio if-else

    Da come descrivi non rispondi affatto al problema, che è quello di mostrare i 6 numeri ordinati
  • Re: Esercizio if-else

    Immaginando di non avere il limite di if-else, come lo faresti? Prova a pensare così, e se trovi una soluzione prova a semplificarla riducendola al solo if-else. Se non puoi semplificarla, trovane un'altra ecc. Alla fine troverai quella giusta. Intanto ti dico che non sei lontano dalla soluzione con quello che hai fatto
  • Re: Esercizio if-else

    ANDPRI ha scritto:


    Immaginando di non avere il limite di if-else, come lo faresti? Prova a pensare così, e se trovi una soluzione prova a semplificarla riducendola al solo if-else. Se non puoi semplificarla, trovane un'altra ecc. Alla fine troverai quella giusta. Intanto ti dico che non sei lontano dalla soluzione con quello che hai fatto
    Bhè a me per la verità non sembra proprio la strada migliore
  • Re: Esercizio if-else

    +m2+ ha scritto:


    ANDPRI ha scritto:


    Immaginando di non avere il limite di if-else, come lo faresti? Prova a pensare così, e se trovi una soluzione prova a semplificarla riducendola al solo if-else. Se non puoi semplificarla, trovane un'altra ecc. Alla fine troverai quella giusta. Intanto ti dico che non sei lontano dalla soluzione con quello che hai fatto
    Bhè a me per la verità non sembra proprio la strada migliore
    Allora diciamo che si avvicina alla mia soluzione. C'è ancora tanto da cambiare ma almeno la base l'ha capita
Devi accedere o registrarti per scrivere nel forum
4 risposte