Esercizio per casa numero 2

Vedi anche DomandeHomework2aa0203, SoluzioneHomework2aa0203, RisultatiHomework2aa0203.

Obiettivi

Con questo esercizio cercherete di controllare se sapete:
  • usare i vettori
  • usare cicli e strutture di controllo un po' più complesse

Simple-Bucket-sort

Per ordinare gli elementi di un vettore di numeri è possibile usare l'algoritmo bucket-sort, che è molto efficiente ma usa molta memoria. (per saperne di più sul bucket-sort vedete sul Deitel&Deitel).

Nel caso in cui si sappia quali sono il massimo ed il minimo valore che possono essere presenti nel vettore è possibile usare una versione molto semplificata dell'algoritmo bucket-sort, che chiameremo simple-bucket-sort.

  • Supponiamo di avere un vettore che si chiama unsorted che contiene numeri interi diversi.
  • Supponiamo inoltre che gli elementi di unsorted siano tutti compresi tra i due valori min e max, inclusi.
  • Definiamo un vettore v che ha tanti elementi quanti quelli che intercorrono tra min e max compresi. Questo vettore serve ad indicare che il valore corrispondente è presente nel vettore da ordinare unsorted. Daremo valore 1 ad un elemento di v se in unsorted è presente il numero corrispondente.
  • Esaminiamo tutti gli elementi di unsorted e settiamo a 1 i corrispondenti elementi di v.
  • Per elencare i numeri di unsorted in ordine crescente basta scandire tutti gli elementi di v e stampare l'elemento corrispondente quando ci si trova un 1.

Compito da svolgere

Implementare un programma C che:
  • Legge da input una successione di 20 interi diversi di valore compreso tra min = -84 e max = 531.
  • Usa l'algoritmo simple-bucket-sort per ordinare gli elementi letti.
  • Stampa le solite 6 righe che vi identificano:
<nome>
<cognome>
<giorno di nascita (2 cifre)>
<mese di nascita (2 cifre)>
<anno di nascita (4 cifre)>
<indirizzo email>
  • Stampa gli elementi in ordine crescente.

Parte facoltativa

  • realizzare il programma precedente in modo che tra i numeri in input possano esserci anche delle ripetizioni.

NOTA: chi vuol fare la versione facoltativa la sottometta invece della versione standard.

Formato dell' input e dell'output

InputOutput
<intero>
....
<intero>
....
<intero>

L'output e' formattato come segue.

Le prime 6 righe di stampa sono formattate come segue.

<nome>
<cognome>
<giorno di nascita (2 cifre)>
<mese di nascita (2 cifre)>
<anno di nascita (4 cifre)>
<indirizzo email>

Le rimanenti righe sono formattate come segue.

<valore minimo>
<valore>
...
...
<valore massimo>

Gestione degli errori

Anche per questo esercizio assumete che l'input sia corretto.

Prompt e messaggo

Anche per questo esercizio non scrivete prompt o messaggi

Esempio

Ecco un esempio per il programma dello studente Mario Rossi della Spigola nato il 17.05.1723 ed email mrds@nessun.posto.it. Testate il vostro programma almeno sull'esempio proposto controllando che, per il dato input, l'output (a parte le prime 6 righe) sia ESATTAMENTE quello riportato nell'esempio.

InputOutput
56
31
49
17
-6
-18
0
90
531
-40
121
3
55
91
300
12
-23
-1
-34
-84
Mario
Rossi della Spigola
17
05
1723
mrds@nessun.posto.it
-84
-40
-34
-23
-18
-6
-1
0
3
12
17
31
49
55
56
90
91
121
300
531


Consegna

  • Il testo del vostro programma va consegnato entro le ore 24 del 1° Novembre 2002.
  • La consegna va effettuata esclusivamente con la pagina http://twiki.dsi.uniroma1.it/~andrea/consegna.html
  • NON ASPETTATE L'ULTIMO MINUTO!!! Rischiate di sovraccaricare il server e di non poter consegnare.
  • NON SARANNO ACCETTATI ESERCIZI CONSEGNATI VIA EMAIL

-- AndreaSterbini - 26 Oct 2002

Edit | Attach | Watch | Print version | History: r6 < r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r6 - 2003-09-30 - AndreaSterbini






 
Questo sito usa cookies, usandolo ne accettate la presenza. (CookiePolicy)
Torna al Dipartimento di Informatica
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback