Esercizio in c utilizzando array

di il
13 risposte

Esercizio in c utilizzando array

Salve a tutti, dovrei fare questo esercizio:
scrivere un programma che mette in ordine crescente n numeri forniti dall'utente. Devo svolgerlo utilizzando l'Array ,if e for.
io ho fatto cosi ma nn mi funziona vorrei sapere come fare:

#include <stdio.h>
int main(void)
{
int a[7]={5,3,1,4,2,7,6};
int i,j;
for (i=0; i>=0; i++){
for (j=0 ; j<=6; j++){
if (a > a[j]) {
a=a[j];
}
if (a<=a[j])
{ a=a[j];
}

}
}
}

13 Risposte

  • Re: Esercizio in c utilizzando array

    Hai sbagliato un paio di cosette: ecco il codice giusto:
    #include <stdio.h>
    
    int main(void)
    {
    int a[7]={5,3,1,4,2,7,6};
    int i,j;
    for (i=0; i<6; i++)
    {
    for (j=1 ; j<=7; j++)
    {
    if (a[i] < a[j])
    {
    temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    }
    }
    }
  • Re: Esercizio in c utilizzando array

    Ho provato ma mi da un errore mi dice che temp non è dichiarato e poi non eseiste un altro metodo semsa usare temp?
    grazie in anticipo
  • Re: Esercizio in c utilizzando array

    La logica di asd è completamente errata!
    Il più semplice algoritmo di sort è il bubble sort:
    
    #include <stdio.h>
    int main(void)
    {
      int a[7]={5,3,1,4,2,7,6};
      int i,j,tmp;
      
      for (j=sizeof(a)/sizeof(int)-1;j;j--)
      {
        for (i=0;i<j;i++)
        {
          if (a[i] > a[i+1]) 
          {
    	tmp=a[i];
    	a[i]=a[i+1];
    	a[i+1]=tmp;
          }
        }
      }
      for (i=0;i<7;i++)
        printf ("%d\n",a[i]);
    }
    
    Saluti,
    Max
  • Re: Esercizio in c utilizzando array

    Grazie max, ma cmq anche in quello che hai scritto tu ci sono cose che ancora al corso che stiamo facendo non abbiamo fatto. sei sicuro che più semplice non si può fare?
    qualcosa di simile a quello che avevo scritto inizialmente no? grazie in anticipo e scusa x l'ignoranza
  • Re: Esercizio in c utilizzando array

    Come ho detto l'algoritmo di sort più semplice è il bubblesort (http://it.wikipedia.org/wiki/Bubble_sort#Pseudocodic)
    Se pensi che abbia scritto qualcosa di strano o che non hai studiato dimmi a cosa ti riferisci...
    Se non capisci questo:
    
    for (j=sizeof(a)/sizeof(int)-1;j;j--)
    
    significa semplicemente:
    
    for (j=6; j>0 ;j--)
    
    La variabile tmp è necessaria per scambiare i valori

    Saluti,
    Max
  • Re: Esercizio in c utilizzando array

    Quindi non cè un altro modo per scambiare i valori? grazie
  • Re: Esercizio in c utilizzando array

    Se tu hai 2 bicchieri, di cui uno d'acqua e uno di vino e vuoi mettere il vino nel bicchiere che ha l'acqua hai bisogno 'per forza' di un terzo bicchiere.

    Saluti,
    Max
  • Re: Esercizio in c utilizzando array

    Ahah bella metafora ho capito... una domanda ma xchè utilizzi a[i+1]?
  • Re: Esercizio in c utilizzando array

    Perchè in questo algoritmo il controllo avviene sempre
    tra il l'indice corrente ed il successivo.
    ... ma guarda che fai prima a leggere sul link che ti ho postato prima
    che fa anche un esempio di spiegazione astratta
    (http://it.wikipedia.org/wiki/Bubble_sort#Spiegazione_astratta)

    Ora chiudo, se hai altre domande risponderò più tardi.

    Saluti,
    Max
  • Re: Esercizio in c utilizzando array

    vinpie ha scritto:


    quindi non cè un altro modo per scambiare i valori? grazie
    Mediante XOR.
  • Re: Esercizio in c utilizzando array

    E' vero che esiste anche XOR per swappare senza il temporaneo,
    ma glielo spieghi tu ad un principiante il bitwise?!

    Saluti,
    Max
  • Re: Esercizio in c utilizzando array

    ixamit ha scritto:


    E' vero che esiste anche XOR per swappare senza il temporaneo,
    ma glielo spieghi tu ad un principiante il bitwise?!
    Non si può negare che esista però. Io segnalo. Sta a lui decidere se e quando informarsi a riguardo.
    Bye.
  • Re: Esercizio in c utilizzando array

    Ok, compreso... non perdiamoci su dei dettagli uscendo dal topic.

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
13 risposte