---++ Esercizio per casa numero 2 Vedi anche DomandeHomework2aa0203, SoluzioneHomework2aa0203, RisultatiHomework2aa0203. ---- %TOC% ---- ---+++ 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: <verbatim> <nome> <cognome> <giorno di nascita (2 cifre)> <mese di nascita (2 cifre)> <anno di nascita (4 cifre)> <indirizzo email> </verbatim> * 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 <center> <table border="1" size="50%"><tr><th>Input</th><th>Output</th></tr> <tr valign="top"><td> <verbatim> <intero> .... <intero> .... <intero> </verbatim> </td><td> L'output e' formattato come segue. Le prime 6 righe di stampa sono formattate come segue. <verbatim> <nome> <cognome> <giorno di nascita (2 cifre)> <mese di nascita (2 cifre)> <anno di nascita (4 cifre)> <indirizzo email> </verbatim> Le rimanenti righe sono formattate come segue. <verbatim> <valore minimo> <valore> ... ... <valore massimo> </verbatim> </td></tr> </table> </center> ---+++ 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<nop>@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. <center> <table border="1" size="50%"><tr><th>Input</th><th>Output</th></tr> <tr valign="top"><td> <verbatim> 56 31 49 17 -6 -18 0 90 531 -40 121 3 55 91 300 12 -23 -1 -34 -84 </verbatim> </td><td> <verbatim> 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 </verbatim> </td></tr> </table> </center> ---- ---+++ 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* -- Users.AndreaSterbini - 26 Oct 2002 * Set ALLOWTOPICCHANGE = Users.DocentiProg1Group
This topic: Programmazione1/AA0506/PZ
>
DomandeHomework2aa0203
>
HomeWork2aa0203
Topic revision: r6 - 2003-09-30 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback