Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.