Esercizio in c utilizzando array

di Anonimizzato6662 il
13 risposte
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

  • 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;
    }
    }
    }
    }
  • 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
  • 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
  • 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
  • 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
  • Quindi non cè un altro modo per scambiare i valori? grazie
  • 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
  • Ahah bella metafora ho capito... una domanda ma xchè utilizzi a[i+1]?
  • 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
  • vinpie ha scritto:


    quindi non cè un altro modo per scambiare i valori? grazie
    Mediante XOR.
  • E' vero che esiste anche XOR per swappare senza il temporaneo,
    ma glielo spieghi tu ad un principiante il bitwise?!

    Saluti,
    Max
  • 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.
  • Ok, compreso... non perdiamoci su dei dettagli uscendo dal topic.

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