[RISOLTO]problema con bubblesort

di il
4 risposte

[RISOLTO]problema con bubblesort

Buonasera, ho un problema con il bubble, praticamente mi rovina il programma, pero sembra fatto perfettamente...posto il codice del bubble
float t;
int j;
for (i = 1; i<n; i++) {
for (j = 1; j < n; j++) {
if (fornitori[j - 1].offerta>fornitori[j].offerta) {
t=fornitori[j - 1].offerta;
fornitori[j - 1].offerta=fornitori[j].offerta;
fornitori[j].offerta=t;
}
}
}
non so il perche ma e questo che da l errore, in quanto ho visto che togliendolo il programma non mi da piu quell errore, in pratica mi da come output un numero stranissimo,,

4 Risposte

  • Re: [RISOLTO]problema con bubblesort

    Ho visto che hai marcato il post come "risolto" ma non hai postato la soluzione...

    Se dovesse interessare a te o a qualcun altro, questo è un banale esempio di utilizzo del bubble sort:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define N 100
    
    int main(int argc, char const *argv[])
    {
    	srand(time(NULL));
    
    	int i, j, temp;
    	int vettore[N];
    
    	// riempio il vettore di numeri casuali
    	for(i = 0; i < N; ++i) {
    		vettore[i] = rand() % 1000;
    	}
    
    
    	// ordinamento con bubble sort
    	for(i = 0; i < N-1; ++i) {
    		for(j = i+1; j < N; ++j) {
    			if(vettore[i] > vettore[j]) {
    				temp = vettore[i];
    				vettore[i] = vettore[j];
    				vettore[j] = temp;
    			}
    		}
    	}
    
    
    	// stampo i primi e gli ultimi valori per dimostrare
    	// che il vettore è stato effettivamente ordinato
    	for(i = 0; i < 5; ++i) {
    		printf("%d\n", vettore[i]);
    	}
    
    	printf("...\n");
    
    	for(i = N-5; i < N; ++i) {
    		printf("%d\n", vettore[i]);
    	}
    
    	return 0;
    }
    
  • Re: [RISOLTO]problema con bubblesort

    minomic ha scritto:


    Ho visto che hai marcato il post come "risolto" ma non hai postato la soluzione...

    Se dovesse interessare a te o a qualcun altro, questo è un banale esempio di utilizzo del bubble sort:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define N 100
    
    int main(int argc, char const *argv[])
    {
    	srand(time(NULL));
    
    	int i, j, temp;
    	int vettore[N];
    
    	// riempio il vettore di numeri casuali
    	for(i = 0; i < N; ++i) {
    		vettore[i] = rand() % 1000;
    	}
    
    
    	// ordinamento con bubble sort
    	for(i = 0; i < N-1; ++i) {
    		for(j = i+1; j < N; ++j) {
    			if(vettore[i] > vettore[j]) {
    				temp = vettore[i];
    				vettore[i] = vettore[j];
    				vettore[j] = temp;
    			}
    		}
    	}
    
    
    	// stampo i primi e gli ultimi valori per dimostrare
    	// che il vettore è stato effettivamente ordinato
    	for(i = 0; i < 5; ++i) {
    		printf("%d\n", vettore[i]);
    	}
    
    	printf("...\n");
    
    	for(i = N-5; i < N; ++i) {
    		printf("%d\n", vettore[i]);
    	}
    
    	return 0;
    }
    
    si con il bubble ci sono, solo che a me la situazione è un po piu complicata..ovvero se io metto una dimensione max del vettore di 5 per esempio, l utente puo ancora non inserire tutti e 5 ,quindi, premendo il tasto '0 '( zero) dopo che ha inserito 2 elementi, l operazione finisce e mi dovrebbe ordinare solo quei 2 elementi nel vettore, solo che a me escono numeri strani , questo perche devo lavorare meglio con gli indici nel bubble
  • Re: [RISOLTO]problema con bubblesort

    ILROLL ha scritto:


    si con il bubble ci sono, solo che a me la situazione è un po piu complicata..ovvero se io metto una dimensione max del vettore di 5 per esempio, l utente puo ancora non inserire tutti e 5 ,quindi, premendo il tasto '0 '( zero) dopo che ha inserito 2 elementi, l operazione finisce e mi dovrebbe ordinare solo quei 2 elementi nel vettore, solo che a me escono numeri strani , questo perche devo lavorare meglio con gli indici nel bubble
    Direi che questo capita perché i valori nel vettore sono non-inizializzati. Prova a inizializzarli prima dell'inserimento a un valore come ad esempio 0, oppure ad arrestare il bubble sort all'indice corrispondente all'ultima cella riempita. In questa maniera non vai ad ordinare tutto il vettore, ma solo il sotto-vettore che ti interessa.
  • Re: [RISOLTO]problema con bubblesort

    minomic ha scritto:


    ILROLL ha scritto:


    si con il bubble ci sono, solo che a me la situazione è un po piu complicata..ovvero se io metto una dimensione max del vettore di 5 per esempio, l utente puo ancora non inserire tutti e 5 ,quindi, premendo il tasto '0 '( zero) dopo che ha inserito 2 elementi, l operazione finisce e mi dovrebbe ordinare solo quei 2 elementi nel vettore, solo che a me escono numeri strani , questo perche devo lavorare meglio con gli indici nel bubble
    Direi che questo capita perché i valori nel vettore sono non-inizializzati. Prova a inizializzarli prima dell'inserimento a un valore come ad esempio 0, oppure ad arrestare il bubble sort all'indice corrispondente all'ultima cella riempita. In questa maniera non vai ad ordinare tutto il vettore, ma solo il sotto-vettore che ti interessa.

    ok, sono riuscito a fare anche questo grazie all aiuto di oregon, pero ora non mi stampa in ordine...
Devi accedere o registrarti per scrivere nel forum
4 risposte