Ir0nM4id3n84
24-11-2004, 23:21
Ciao,
ho scritto un programma in C che dato un vettore richiama una funzione che lo ordina mediante l'algoritmo BubleSort e stampa il risultato del vettore ordinato.
Il programma funziona e il vettore viene ordinato ma quando lo stampa vengono stampati anche una serie di numeri strani vicino al primo elemento e non capisco proprio il perchè....
#include <stdio.h>
#define SIZE 15
void ordinaBublesort(int[], int); /* La funzione per ordinare il vettore ha come parametri il puntatore all'indirizzo di
memoria in cui inizia il vettore e la dimensione del vettore stesso */
int main(void){
int vettore[SIZE] = {2,77,31,53,44,1,5,0,33,19,48,86,51,38,21};
int i;
printf("Contenuto di un vettore di interi formato da 15 elementi prima di essere ordiato:\n");
for(i = 0; i < SIZE; i++) // Stampo il vettore prima che venga ordinato dalla funzione ordinaBublesort
printf("%3d", vettore[i]);
ordinaBublesort(vettore, SIZE); // Chiamo la funzione e gli passo il puntatore al vettore e la sua dimensione
return 0;
}
void ordinaBublesort(int array[], int size){
int i, passo, temp;
for(passo = 1; passo < size; passo++){ // Ciclo dei passaggi
for(i = 0; i < size; i++){ // Ciclo per ogni singolo passaggio
if(array[i] > array[i+1]){ // Confronto tra ogni coppia di posizioni adiacenti
temp = array[i]; // Memorizza il valore da spostare avanti nella variabile temporanea
array[i] = array[i+1]; // Scambia il valore
array[i+1] = temp; // Ripristina alla giusta locazione del vettore il valore salvato in temp
}
}
}
printf("\n\n\n Contenuto del vettore di interi dopo essere stato ordinato dalla funzione ordinaBublesort:\n");
for(i = 0; i < size; i++)
printf("%3d", array[i]);
}
Grazie
ho scritto un programma in C che dato un vettore richiama una funzione che lo ordina mediante l'algoritmo BubleSort e stampa il risultato del vettore ordinato.
Il programma funziona e il vettore viene ordinato ma quando lo stampa vengono stampati anche una serie di numeri strani vicino al primo elemento e non capisco proprio il perchè....
#include <stdio.h>
#define SIZE 15
void ordinaBublesort(int[], int); /* La funzione per ordinare il vettore ha come parametri il puntatore all'indirizzo di
memoria in cui inizia il vettore e la dimensione del vettore stesso */
int main(void){
int vettore[SIZE] = {2,77,31,53,44,1,5,0,33,19,48,86,51,38,21};
int i;
printf("Contenuto di un vettore di interi formato da 15 elementi prima di essere ordiato:\n");
for(i = 0; i < SIZE; i++) // Stampo il vettore prima che venga ordinato dalla funzione ordinaBublesort
printf("%3d", vettore[i]);
ordinaBublesort(vettore, SIZE); // Chiamo la funzione e gli passo il puntatore al vettore e la sua dimensione
return 0;
}
void ordinaBublesort(int array[], int size){
int i, passo, temp;
for(passo = 1; passo < size; passo++){ // Ciclo dei passaggi
for(i = 0; i < size; i++){ // Ciclo per ogni singolo passaggio
if(array[i] > array[i+1]){ // Confronto tra ogni coppia di posizioni adiacenti
temp = array[i]; // Memorizza il valore da spostare avanti nella variabile temporanea
array[i] = array[i+1]; // Scambia il valore
array[i+1] = temp; // Ripristina alla giusta locazione del vettore il valore salvato in temp
}
}
}
printf("\n\n\n Contenuto del vettore di interi dopo essere stato ordinato dalla funzione ordinaBublesort:\n");
for(i = 0; i < size; i++)
printf("%3d", array[i]);
}
Grazie