Ciao a tutti, sono nuovo del forum e ho subito una domanda da farvi, è una modifica al selection sort in modo che mi elimini gli eventuali doppioni che un utente puo' inserire nel vettore, esempio:
Input:
10 10 10 10 10 9 9 8 7 6 5 5
output
5 6 7 8 9 10
La funzione che devo modificare è selectionsort() ecco il codice del programma intero la funzione che deve essere modificata è l'ultima ed è commentata riga x riga.
Selection sort prende il numero minimo è lo sposta nella prima celle dall'array a[0] e man mano espande la parte sx dell'array (contrario del bubble sort) con i valori in ordine crescente.
Il codice:
Le 2 funzioni insert() e stampa() permettono la prima l'inserimento dei dati nel vettore (l'utenete Deve avere la possibilità di inserire i doppi, quindi non va modificata), la seconda stampa a video i dati contenuti nell'array.codice:#include<stdio.h> #define SIZE 10 void insert(int[], int); void selectionsort(int[], int); void stampa(int[], int); int a[SIZE]; int main() { int i, j; insert(a, SIZE); printf("Array Originale:\n"); stampa(a, SIZE); selectionsort(a, SIZE); printf("\n\nStampo l'array ordinato:\n"); stampa(a, SIZE); printf("\n"); return 0; } /** @params: a = Vettore size = dimensione */ void stampa(int *a, int size) { int i; for(i = 0; i < size; i++) { printf("%d ", a[i]); } } /** @params: a = Vettore size = dimensione */ void insert(int *a, int size) { int i = 0; for(i = 0; i < size; i++) { printf("Inserisci il valore in posisione %d: " ,i); scanf("%d", &a[i]); } } void selectionsort(int *a, int size) { int i, j, min, p; //primo ciclo esterno for da 0 a size-1 for(i = 0; i < size - 1; ++i) { //assena a min il valore dell'array min= a[i]; // memorizza l'indice nella va p p = i; ciclo for interno da i+1(x' il min si trova gia' in a[0]) a size for(j = i + 1; j < size; ++j) { //se il valore dopo è < di quello prima inverti if (a[j] < min) { min = a[j]; p = j; } } a[p]=a[i]; a[i]=min; }
Vi prego aiutatemi sono alle primissime armi con la programmazione e sono spiazzato!
Grazie a tutti

Rispondi quotando
. . .

