La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ordinamento.

Presentazioni simili


Presentazione sul tema: "Ordinamento."— Transcript della presentazione:

1 Ordinamento

2 Scopo del programma Il programma simula l’ordinamento di oggetti in scaffali Si immagina di avere 4 scaffali ad ognuno dei quali viene associato un tipo di oggetti Gli oggetti vengono acquisiti disordinatamente dal sistema così come vengono dati dall’operatore Il compito del programma è quello di sistemare tutti gli oggetti al proprio posto Gli oggetti sono multipli di 4 in modo tale che per ogni scaffale venga assegnato lo stesso numero di oggetti Il programma dovrebbe ordinare oggetti uguali nello stesso scaffale e tutti in ugual numero Se in uno scaffale si trovano oggetti uguali di numero maggiore del previsto, sicuramente ci sarà uno scaffale dove il numero di oggetti è minore Gli oggetti in più in uno scaffale vengono sistemati nello scaffale dove gli oggetti sono di meno ma non saranno tutti uguali

3 Es: disordine libri pupazzi giocattoli fumetti

4 Es: ordine libri pupazzi giocattoli fumetti

5 Struttura del programma
Il programma è formato da tre parti fondamentali: il main e due subroutine void insertion e void mostraScaffali Nel main vengono acquisiti i dati e vengono richiamate le due subroutine La subroutine insertion ordina i dati secondo gli scaffali di appartenenza La subroutine mostraScaffali mostra a video i dati

6 Struttura dati I dati vengono dichiarati in un array di interi il cui massimo numero è 400 Il valore degli array deve andare da 1 a 4 Al numero 1 si associa quaderno, al numero 2 si associa giocattolo al numero 3 si associa fumetto e al numero 4 pupazzo Il confronto tra i dati è quindi fatto tra numeri interi che vanno da 1 a 4

7 Acquisizione dati for (i=0;i<tot;i++){ do{ printf("\ninserisci l'oggetto %d : ",i+1); scanf("%d",&oggetti[i]); }while(oggetti[i]<1 || oggetti[i]>4); } Il numero dei dati è tot; essi vengono indicizzati dal numero progressivo i Gli oggetti vengono acquisiti per ogni ciclo; se il dato ha un valore <1 oppure valore >4, si richiede l’inserimento, altrimenti si avanza di una unità il ciclo for

8 Acquisizione dati i=1 a[i] 1<a[i]<4? si no i<tot? no si i=i+1

9 Ordinamento

10 Ordinamento int temp; /* Indice temporaneo per scambiare elementi */ int prossimo; int attuale; for (prossimo=1;prossimo<tot;prossimo++){ temp=oggetti[prossimo]; attuale=prossimo-1; while ((attuale>=0) && (oggetti[attuale]>temp)){ oggetti[attuale+1]=oggetti[attuale]; attuale=attuale-1; } oggetti[attuale+1]=temp;

11 Pseudocodice Per prossimo=1…..tot{ temp ←oggetti[prossimo]
attuale ←prossimo – 1 while attuale > 0 e oggetti[attuale] > temp do {oggetti[attuale+1] ←oggetti[attuale] attuale←attuale-1 } oggetti[attuale+1] ←temp

12 Ordinamento Il confronto dei dati è fatto a due a due
Ogni elemento viene confrontato con il precedente Se il dato attuale è maggiore o uguale al precedente, non viene fatto lo scambio altrimenti viene fatto Se i dati sono n e sono già ordinati, il numero di iterazioni è pari a n; se il disordine è massimo, il numero di iterazioni è pari a n*n

13 Flow chart fine si no no si prossimo←1 Prossimo>tot?
temp ← Oggetti[prossimo] attuale← prossimo-1 Attuale>0?&& oggetti[attuale]>temp? no si Oggetti[attuale+1] ←temp Oggetti[attuale+1] ←oggetti[attuale] Prossimo=prossimo+1 attuale ←attuale-1

14 esempio

15 esempio


Scaricare ppt "Ordinamento."

Presentazioni simili


Annunci Google