Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] bubble sort

  1. #1

    [C] bubblesort

    scusate, non riesco a capire perchè non va.. ci deve essere un errore nel passaggio dei parametri, ma non riesco a capire cosa sbaglio.
    potete aiutarmi?

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    
    void bubblesort(int, int, int *, int );
    
    int main() {
    
    int *vet,n,i;
    int *pp, p, x;
    double a[10];
    
    printf("\nQuanti elementi vuoi inserire nell'array?\n");
    scanf("%d",&n);
    vet=(int *) malloc (n*sizeof(int));
    
    for(i=0;i<n;i++){
     printf("\nInserisci il %d elemento dell'array: \n",i+1);
     scanf("%d",&vet[i]);
    }
    
    pp = &p;
    bubblesort(a, n, pp, x);
    
    printf("\n?L'array ordinato e' il seguente: \n");
    for(i=0;i<n;i++)
     printf(" %d \n",vet[i]);
    
     
    system("pause");
    return 0;
    }
    
    
    void bubblesort(int vet, int n, int *p, int x) {
     int i, j, temp, vet;
         for(i = 0; i < 10; i++)
            printf("%d ", vet[i]);
            
        for(i = 0; i < 9; i++)
            for(j = i + 1; j < 10; j++)
                if(vet[j] < vet[i])
                {
    	        temp = vet[i];
    	        vet[i] = vet[j];
    	        vet[j] = temp;
      	    }
        
        printf("\n");
        
        for(i = 0; i < 10; i++)
            printf("%d ", vet[i]);
            
        printf("\n");
        system("pause");
        return 0;
    }
    grazie.
    @@@

  2. #2
    sicuramente (a occhio) sbagli a passare A
    poi non capisco a cosa ti servono tutti quei parametri (per non parlare delle variabili)!?
    questo l'ho riscritto da zero:
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void bubble_sort(int *, int);
    
    int main() 
    {
        int *vect, ne, i;
        
        printf("Quanti elementi vuoi inserire nell'array?: ");
        scanf("%d",&ne);
        printf("\n");
        
        vect = (int *) malloc (ne*sizeof(int));
    
        for(i = 0; i < ne; i++)
        {
            printf("Inserisci il %d elemento dell'array: ", i+1);
            scanf("%d", &vect[i]);
        }
    
        bubble_sort(vect, ne);
    
        printf("\nL'array ordinato e' il seguente:\n");
        
        for(i = 0; i < ne; i++)
            printf("%d\n",vect[i]);
    
        system("pause");
        return 0;
    }
    
    
    void bubble_sort(int *vect, int ne){
    
        int i, j, tmp;
    
        for(i = 0; i < ne - 1; i++)
    		
            for(j = i + 1; j < ne; j++)
                
    	    if(vect[j] < vect[i])
                {
    	        tmp = vect[i];
    		vect[i] = vect[j];
    		vect[j] = tmp;
    	    }	
    }
    p.s. utilizza anche il motore di ricerca (di bubble sort se n'è parlato a dismisura)
    ...Terrible warlords, good warlords, and an english song

  3. #3
    allora, innanzitutto grazie ancora!
    non so neanch'io perchè ci fossero tutti quei paramentri e quelle variabili, era un programma iniziato qualche mese fa e tentavo di finirlo ora, ma sto imparando che è meglio ricominciare da capo!

    ho modificato il tuo prog nella maniera seguente -e funziona -, xkè il prof richiedeva esplicitamente la traduzione di alcuni programmi che ci ha fornito in pascal (ed è x questo motivo che non uso il motore di ricerca).

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    
    void bubble_sort(int *, int);
    
    int main() 
      {
        int *vet, n, i;
        
        printf("Quanti elementi vuoi inserire nell'array?: ");
        scanf("%d",&n);
        printf("\n");
        
        vet = (int *) malloc (n*sizeof(int));
    
        for(i = 0; i < n; i++)
          {
            printf("Inserisci il %d elemento dell'array: ", i+1);
            scanf("%d", &vet[i]);
          }
    
        printf("\nGli elementi inseriti nell'array sono: ");
          
        for(i = 0; i < n; i++)
          printf("%d ", vet[i]);
    	
        printf("\n\n");
    
        bubble_sort(vet, n);
    
        printf("\nL'array ordinato e' il seguente: ");
        
        for(i = 0; i < n; i++)
            printf("%d ", vet[i]);
        printf("\n\n");
        system("pause");
        return 0;
     }
    
    
    void bubble_sort(int *vet, int n)
     {
    
        int i=0, j, temp;
        bool sorted;
    
        sorted = false;
    
        while ((i<n) && (!sorted))
          {  
    		sorted = true;
            i++;
            for(j = 0; j < n-1; j++)
                
    	    if(vet[j] > vet[j+1])
              {
    	       temp = vet[j];
     	       vet[j] = vet[j+1];
     	       vet[j+1] = temp;
     	       sorted = false;
     	      }	
      	  }
     }
    ps: emmh.. se ho ancora bisogno, conto su di te, grazie 1000!!!
    @@@

  4. #4
    bool sorted;
    non vorrei dire una castronata...
    ma se la memoria non mi inganna, il tipo di dato bool
    non è ancora stato introdotto dallo standard ansi per il C
    (è una parola riservata/statemement del C++)

    ovviamente se per compilare il listato C, utilizzi un compilatore C++ (DEVC++ ad esempio) l'errore non verrà rilevato
    ...Terrible warlords, good warlords, and an english song

  5. #5
    ..ecco.. mi sa che non dici una castronata, xkè anch'io avevo il sospetto..

    ..emmh.. quindi dovrei definirlo io il tipo bool?


    ps: dovrei postare un altro programmino, lo posto qui o apro un altro thread?


    grazie per la pazienza!
    @@@

  6. #6
    non capisco a cosa ti serve quel "sorted"
    ma se proprio devi metterlo... puoi benissimo utilizzare un int

    se 0 == FALSE
    se 1 == TRUE

    codice:
    void bubble_sort(int *vet, int n)
     {
    
        int i=0, j, temp;
        int sorted = 0;
    
        while ((i<n) && (!sorted))
        {  
    	sorted = 1;
            i++;
            for(j = 0; j < n-1; j++)
                
    	    if(vet[j] > vet[j+1])
                {
    	        temp = vet[j];
     	        vet[j] = vet[j+1];
     	        vet[j+1] = temp;
     	        sorted = 0;
     	     }	
      	}
     }
    N.B. se si tratta di un altro argomento (non bubble sort)
    apri un'altra discussione
    ...Terrible warlords, good warlords, and an english song

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.