Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152

    [C] Selection sort

    ragazzi una volta compilato mi da errore : segmentation fault<core dumped>
    dov'è l'errore ?

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    
    int main()
    
    {   int a[10],n,i,j,t,p,min;;
        
        printf("\n Quanti elementi vuoi inserire nell'array ?");
        scanf("%d",&n);
        for(i=0;i<n;i++)
            {printf("\n Inserisci elemento");
             scanf("%d",&a[i]);
            }
    
    min=a[0];
         for(i=0;i<n-1;i++)
            { for(j=i+1;j<n;j++)
                 {if(a[j]<min)
                   {  min=a[j];
                      p=j;
                  }
                 }
          t=a[i];
          a[i]=min;
          a[p]=t;
         }
    for(i=0;i<n;i++)
       {printf("\n %d",a[i]);
       }
    return 0;
    }

  2. #2

    Re: [C] Selection sort

    Originariamente inviato da johnnny
    ragazzi una volta compilato mi da errore : segmentation fault<core dumped>
    dov'è l'errore ?

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    
    int main()
    
    {   int a[10],n,i,j,t,p,min;;
        ....
    }
    Intanto prova a correggere quel ; di troppo. Poi vediamo se c'è qualcos'altro

  3. #3

    Re: [C] Selection sort

    Originariamente inviato da johnnny
    ragazzi una volta compilato mi da errore : segmentation fault<core dumped>
    dov'è l'errore ?

    codice:
    
    
    int main()
    
    
         for(i=0;i<n-1;i++)
            { for(j=i+1;j<n;j++)
                 {if(a[j]<min)
                   {  min=a[j];
                      p=j;
    La condizione del for è palesemente errata. Se inserisci UN elemento, lui fa i=0, i<1-1. Suggerisco un <= o un <n.

  4. #4

    Re: Re: [C] Selection sort

    Originariamente inviato da _Alfabetagamma_
    La condizione del for è palesemente errata. Se inserisci UN elemento, lui fa i=0, i<1-1. Suggerisco un <= o un <n.

    Mmmm lo scopo del programma è quello di ordinare l'array, se è presente un solo elemento, l'array è già ordinato e quindi non deve nemmeno entrare nel ciclo
    Salute a voi, da Laikius!

    --> Faber est suae quisque fortunae <--

  5. #5
    ops avevo cercato un errore (in generale) senza notare cosa facesse il programma XD

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Ciao!!!

    Beh stai palesemente sbagliando l'algoritmo, il selection sort lavora sugli indici del vettore, poi proprio non capisco a cosa ti possa servire quella p.

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2010
    Messaggi
    152
    allora se puoi vorresti postarmi una versione corretta del selection sort?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    59
    Ecco:

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    int main()
    
    {   int a[10]; //vettore
        int i, j, imin; //indici
        int n, t;
    
        do{
            printf("\n Quanti elementi vuoi inserire nell'array ?");
            scanf("%d",&n);
        }while(n<1 || n>10); //controllo sulle dimensioni del vettore
    
        for(i=0;i<n;i++){
            printf("\nInserisci elemento: ");
            scanf("%d", &a[i]);
        }
    
        for(i=0;i<n-1;i++){
            imin=i;
            for(j=i+1;j<n;j++){
                if(a[j]<a[imin]){
                    imin=j; //nel caso a[j]<a[min] assegno ad imin il valore di j, bada bene il valore
                            //di j (ovvero l'indice) non di a[j] (ovvero il valore contenuto nella posizione j-esima del vettore)
                }
            }
            t=a[i];
            a[i]=a[imin];
            a[imin]=t;
        }
    
        printf("\n\nEcco il vettore ordinato\n\n");
        for(i=0;i<n;i++){
            printf("%d ",a[i]);
        }
    
        return 0;
    }
    Ora che ti ho postato il codice, ti esorto a leggerlo e a comprendere dove sbagliavi in precedenza e se c'è qualcosa che non capisci chiedi pure.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.