Tags:
tag this topic
create new tag
view all tags
---+++ <font color="blue" size="+2">Homeworks</font> ---++ <font color="blue" size="+1">REGOLE GENERALI:</font> 0) Gli homework devono essere sottomessi entro il termine stabilito per essere ritenuti validi. Per l'orario della consegna fa fede quello del mail server. 1) Seguire esattamente le specifiche dell'input e dell'output. 2) Non includere getchar() o scanf() alla fine del codice dell'esercizio (utilizzatelo per provare il funzionamento ma non includete le istruzioni di attesa alla fine del file nella versione inviata). 3) Leggere l'input con scanf semplici. Es: scanf("%d",&n) per leggere un intero n, non inserire stampe del tipo printf("Inserisci il valore\n"); 4) Per ogni esercizio (Homework) inviare un unico file contenente i sorgenti (.c). Controllare bene l'estensione dei file inviati, essa deve essere (.c) e non (.cc o altro). Non copiare dagli altri, sarà effettuato un controllo di differenze e se la percentuale di differenze sarà bassa il compito verrà rifiutato. Verranno rifiutati sia i compiti di chi copia che di chi lascia copiare. 5) Vanno inviati SOLO i sorgenti di codice e NON i file compilati (.out, .exe). 6) Il nome da dare ai file è: _NomeCognome.NumeEsercizio.c_ . Quindi nel mio caso: _RobertoPetroccia.1.c_ per il primo esercizio, _RobertoPetroccia.2.c_ per il secondo, _RobertoPetroccia.3.c_ per il terzo e così via. 7) Per inviare i sorgenti C: 7.1) E' necessario essere iscritti al sito twiki.di.uniroma1.it (si può fare dal link: http://twiki.di.uniroma1.it/twiki/view/TWiki/TWikiRegistration) . 7.2) collegarsi al sito http://twiki.di.uniroma1.it/~prog1-eo/ 7.3) compilare il form facendo l'upload delle soluzioni prodotte e cliccare su "spedisci la tua soluzione!" 7.4) riceverete una e-mail di conferma a cui non bisogna inviare reply 8) Se le soluzioni vengono inviate più di una volta, ogni nuovo invio sovrascrive i precedenti. Verrà quindi considerato l'ultima versione da voi inviata. 9) Potete usare la seguente pagina per fare domande: PaginaDomande ---++ <font color="blue" size="+1">A.A. 2008/09:</font> ---++ E' disponibile il primo Homework per l'A.A. 08/09. Potete scaricare il testo del privo homework cliccando su [[http://twiki.di.uniroma1.it/~prog1-eo/Homework1.pdf][Homework1.pdf]] ---++ <font color="blue" size="+1">A.A. 2006/07:</font> ---++ <font color="blue" size="+1">Homework 1 (assegnato il 19 ottobre, consegna entro il 26 ottobre ore 10.30)</font> ESERCIZIO 1: Scrivere un programma che calcoli la somma dei primi "n" numeri pari e dei primi "n" dispari, prendendo "n" in input. Effettuare all'interno del programma il calcolo tre volte: a) la prima volta usando due for b) la seconda volta usando due while c) la terza volta usando un unico for od un'unico while INPUT: intero "n" OUTPUT: 6 interi (con un carattere di "\n" alla fine) es: dato in input n=3 l'output sarà 129129129\n, cioè la somma dei primi 3 numeri pari è 12 (2+4+6) e la somma dei primi 3 numeri dispari è 9 (1+3+5), ripetuto tre volte con le procedure descritte ai punti a),b),c). ESERCIZIO 2: Dato un intero reale positivo "a" in input, e la sequenza di numeri reali: X0 = 1, X1=1/2*(X0+a/X0),...,Xi+1=1/2*(Xi+a/Xi) per i=0,1,2,... si dimostra matematicamente che per valori grandi di i, la sequenza approssima la radice quadrata di "a" (deriva dal metodo di Newton-Raphson). Scrivete un programma che legga "a" in input ed "n" numero di iterazioni e utilizzi questo metodo per il calcolo approssimato della radice quadrata. Non va, ovviamente, utilizzata la funzione sqrt della libreria standard. A ogni esecuzione del ciclo stampare il numero di iterazione, ed i valori di X1 (che converge alla radice quadrata di "a"). Utilizzare l'istruzione while. INPUT: float "a" ed intero "n" OUTPUT: sequenza di coppie (iterazione):(valore di X1)\n dove (iterazione) è un intero e (valore di X1) è un float es: dato a=4 ed n=3 l'output sarà: 1:1\n 2:2.5\n 3:2.05\n ---++ <font color="blue" size="+1">Homework 2 (assegnato il 26 ottobre, consegna entro il 2 novembre ore 10.30)</font> ESERCIZIO 3: Scrivere un programma che legga da tastiera due interi x ed y, e che contenga due funzioni i cui prototipi sono: int MCD1(int a, int b); e int MCD2(int a, int b); La prima funzione deve stampare il massimo comun divisore di a e b calcolandolo nel modo ovvio (scorrendo una serie di valori). La seconda funzione deve stampare anch'essa il massimo comun divisore utilizzando la formula (di Euclide) seguente: sia x>=y. Se y=0 MCD(x,y)=x, altrimenti MCD(x,y)=MCD(y, x%y) dove % è l'operatore resto. INPUT: intero "x" ed intero "y" OUTPUT: 2 interi (con un carattere di "\n" alla fine) es: dato in input x=6 e y=15 l'output sarà 33\n, cioè il MCD di 6 e 15, ripetuto due volte, ciascuno stampato da una funzione. ESERCIZIO 4: Scrivere un programma che prenda in input 4 valori reali, che rappresentano le coordinate di due punti nel piano cartesiano, e stampi la distanza tra i due punti. Il programma dovrebbe contenere una funzione che prende come parametri 4 double e restituisce un double. INPUT: 4 double x1, y1, x2 ed y2. OUTPUT: un double, che rappresenta la distanza tra P1 (x1,y1) e P2(x2,y2) es: dati x1=2.5, y1=4.5, x2=5.5, y2=0.5 l'output sarà 5.000000 ---++ <font color="blue" size="+1"> Homework 3 (assegnato il 16 Novembre, consegna entro il 23 novembre ore 10.30)</font> ESERCIZIO 5: Scrivere un programma che prenda in input due numeri interi positivi n ed m rappresentanti le lunghezze di due array A e B, e successivamente legga in input tutti gli elementi degli array A e B. Le lunghezze n ed m devono essere minori di 50. Il programma deve stampare tutti gli elementi presenti in B, ma non in A. INPUT: due interi n ed m emtrambi minori di 50. Gli elementi degli array A e B rispettivamente di lunghezza n ed m. OUTPUT: gli elementi di B non presenti in A. es: dati in input n=4 ed m=5 con A[0]=5 A[1]=3 A[2]=2 A[3]=0 e B[0]=0 B[1]=10 B[2]=3 B[3]=11 B[4]=9, l'output sara': 10 11 9 ESERCIZIO 6: Scrivere un programma che prenda input un intero positivo n rappresentante la lunghezza di un array A, e successivamente legga in input tutti gli elementi dell'array A. La lunghezza n deve essere minore di 50. Il programma, usando il solo array A, deve invertire l’ordine degli elementi ed al termine dell’elaborazione stampare l’array A. INPUT: un intero n minore di 50. Gli elementi dell'array A di lunghezza n. OUTPUT: gli elementi di A invertiti nell'ordine. es: dati in input n=4 e A[0]=5 A[1]=3 A[2]=2 A[3]=0, l'output sarà: 0 2 3 5. ---++ <font color="blue" size="+1"> Homework 4 (assegnato il 23 Novembre, consegna entro il 30 novembre ore 10.30)</font> ESERCIZIO 7: Scrivere un programma che includa una funzione ricorsiva tale che, assegnato il numero dei dischi del gioco, fornisca una soluzione al problema della torre di Hanoi. La torre di Hanoi è un gioco apparso in Europa nell’Ottocento, con una documentazione promozionale (probabilmente apocrifa), che rappresentava il gioco come il lavoro compiuto nel tempio di Brahma. Alla creazione del mondo ai sacerdoti del tempio era stata data una piattaforma su cui erano fissati tre supporti di diamante: sul primo supporto erano infilati 64 dischi d’oro, ognuno leggermente più piccolo di quello su cui era posato. Ai sacerdoti era assegnato il compito di muovere tutti i dischi dal primo supporto al terzo, con il vincolo di muovere un solo disco alla volta e senza sovrapporre dischi più grandi a dischi più piccoli. Quando i sacerdoti avessero terminato il loro compito, sarebbe arrivata la fine del mondo. * Torre di Hanoi: <br /> <img src="%ATTACHURLPATH%/torre.jpg" alt="torre.jpg" width='445' height='424' /> Il punto di partenza è riuscire a risolvere il problema con pochi dischi: è fin troppo ovvia la soluzione minima con uno o due dischi (ovviamente se c'è una soluzione minima ce ne sono infinite altre), e certamente non crea problemi la soluzione con tre dischi...Ovviamente va trovata una soluzione ricorsiva. La rappresentazione delle mosse avra' la seguente codifica: 1) i pioli si chiameranno 0, 1 e 2, da sinistra a destra (anche se nella figura si chiamano A B C noi useremo le lettere per i dischi ed i numeri per i pioli); 2) i dischi si chiameranno A, B, C... dall'alto in basso; 3) una mossa sarà indicata dalla lettera del disco mosso seguita dal numero del piolo su cui viene posto (ad esempio la prima mossa è A1); 4) una soluzione del gioco è rappresentata da una stringa di una certa lunghezza, composta da una concatenazione di mosse separate da trattini (ad esempio una soluzione del problema a due dischi è A1-B2-A2) che, se eseguite, spostano correttamente una torre di Hanoi. Assumeremo sempre di partire dal piolo 0. INPUT: un intero n rappresentante il numero di dischi (in generale il test con n<10 va bene) OUTPUT: stampare una sequenza di caratteri (o una stringa), composta da una concatenazione di mosse separate da trattini (ad esempio una soluzione del problema a due dischi è A1-B2-A2) che, se eseguite, spostano correttamente una torre di Hanoi. es: dato in input n=3, l'output sarà: A1-B2-A2-C1-A0-B1-A1. ---++ <font color="blue" size="+1"> Homework 5 (assegnato il 07 Dicembre, consegna entro il 14 Dicembre ore 10.30)</font> ESERCIZIO 8: Scrivere un programma che permetta l'inserimento di una lista di interi ordinata (si assume che i dati in input sia inseriti in maniera ordinata) mediante l'impiego di puntatori e allocazione dinamica della memoria. L'inserimento terminera' quando viene dato in input il valore sentinella 9999. Successivamente il programma dovra' leggere in input un elemento intero e stampare la lista con l'elemento in piu' ancora ordinata (inserimento ordinato dell'elemento nella lista inserita). INPUT: un lista di interi ordinati, e un intero da inserire ordinatamente nella lista. OUTPUT: stampa della lista con l'elemento in piu' ancora ordinata. es: data la lista 1,2,6,8 e l'intero 5, l'output sarà 1,2,5,6,8.
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
jpg
torre.jpg
r1
manage
41.2 K
2006-11-23 - 15:37
AlessioMalizia
torre hanoi
E
dit
|
A
ttach
|
Watch
|
P
rint version
|
H
istory
: r20
<
r19
<
r18
<
r17
<
r16
|
B
acklinks
|
V
iew topic
|
Ra
w
edit
|
M
ore topic actions
Topic revision: r20 - 2008-10-11
-
RobertoPetroccia
Log In
or
Register
Programmazione1/EO Web ...
Programmazione1/EO Web
Programmazione1/EO Web Home
Users
Groups
Index
Search
Changes
Notifications
Statistics
Preferences
User Reference ...
User Reference
ATasteOfTWiki
TextFormattingRules
TWikiVariables
FormattedSearch
TWikiDocGraphics
TWikiSkinBrowser
InstalledPlugins
ChangeEmailAddress
ChangePassword
ResetPassword
Prenotazioni esami
Laurea Triennale ...
Laurea Triennale
Algebra
Algoritmi
Introduzione agli algoritmi
Algoritmi 1
Algoritmi 2
Algoritmi per la
visualizzazione
Architetture
Prog. sist. digitali
Architetture 2
Basi di Dati
Basi di Dati 1 Inf.
Basi di Dati 1 T.I.
Basi di Dati (I modulo, A-L)
Basi di Dati (I modulo, M-Z)
Basi di Dati 2
Calcolo
Calcolo differenziale
Calcolo integrale
Calcolo delle Probabilitą
Metodi mat. per l'inf. (ex. Logica)
canale AD
canale PZ
Programmazione
Fond. di Programmazione
Metodologie di Programmazione
Prog. di sistemi multicore
Programmazione 2
AD
EO
PZ
Esercitazioni Prog. 2
Lab. Prog. AD
Lab. Prog. EO
Lab. Prog. 2
Prog. a Oggetti
Reti
Arch. di internet
Lab. di prog. di rete
Programmazione Web
Reti di elaboratori
Sistemi operativi
Sistemi Operativi (12 CFU)
Anni precedenti
Sistemi operativi 1
Sistemi operativi 2
Lab. SO 1
Lab. SO 2
Altri corsi
Automi, Calcolabilitą
e Complessitą
Apprendimento Automatico
Economia Aziendale
Elaborazione Immagini
Fisica 2
Grafica 3D
Informatica Giuridica
Laboratorio di Sistemi Interattivi
Linguaggi di Programmazione 3° anno Matematica
Linguaggi e Compilatori
Sistemi Informativi
Tecniche di Sicurezza dei Sistemi
ACSAI ...
ACSAI
Computer Architectures 1
Programming
Laurea Magistrale ...
Laurea Magistrale
Percorsi di studio
Corsi
Algoritmi Avanzati
Algoritmica
Algoritmi e Strutture Dati
Algoritmi per le reti
Architetture degli elaboratori 3
Architetture avanzate e parallele
Autonomous Networking
Big Data Computing
Business Intelligence
Calcolo Intensivo
Complessitą
Computer Systems and Programming
Concurrent Systems
Crittografia
Elaborazione del Linguaggio Naturale
Estrazione inf. dal web
Fisica 3
Gamification Lab
Information Systems
Ingegneria degli Algoritmi
Interazione Multi Modale
Metodi Formali per il Software
Methods in Computer Science Education: Analysis
Methods in Computer Science Education: Design
Prestazioni dei Sistemi di Rete
Prog. avanzata
Internet of Things
Sistemi Centrali
Reti Wireless
Sistemi Biometrici
Sistemi Distribuiti
Sistemi Informativi Geografici
Sistemi operativi 3
Tecniche di Sicurezza basate sui Linguaggi
Teoria della
Dimostrazione
Verifica del software
Visione artificiale
Attivitą complementari
Biologia Computazionale
Design and development of embedded systems for the Internet of Things
Lego Lab
Logic Programming
Pietre miliari della scienza
Prog. di processori multicore
Sistemi per l'interazione locale e remota
Laboratorio di Cyber-Security
Verifica e Validazione di Software Embedded
Altri Webs ...
Altri Webs
Dottorandi
Commissioni
Comm. Didattica
Comm. Didattica_r
Comm. Dottorato
Comm. Erasmus
Comm. Finanziamenti
Comm. Scientifica
Comm Scientifica_r
Corsi esterni
Sistemi Operativi (Matematica)
Perl e Bioperl
ECDL
Fondamenti 1
(NETTUNO)
Tecniche della Programmazione 1° modulo
(NETTUNO)
Seminars in Artificial Intelligence and Robotics: Natural Language Processing
Informatica generale
Primo canale
Secondo canale
II canale A.A. 10-11
Informatica
Informatica per Statistica
Laboratorio di Strumentazione Elettronica e Informatica
Progetti
Nemo
Quis
Remus
TWiki ...
TWiki
Tutto su TWiki
Users
Main
Sandbox
Home
Site map
AA web
AAP web
ACSAI web
AA2021 web
Programming web
AA2021 web
AN web
ASD web
Algebra web
AL web
AA1112 web
AA1213 web
AA1920 web
AA2021 web
MZ web
AA1112 web
AA1213 web
AA1112 web
AA1314 web
AA1415 web
AA1516 web
AA1617 web
AA1819 web
Old web
Algo_par_dis web
Algoreti web
More...
EO Web
Create New Topic
Index
Search
Changes
Notifications
RSS Feed
Statistics
Preferences
View
Raw View
Print version
Find backlinks
History
More topic actions
Edit
Raw edit
Attach file or image
Edit topic preference settings
Set new parent
More topic actions
Account
Log In
Register User
Questo sito usa cookies, usandolo ne accettate la presenza. (
CookiePolicy
)
Torna al
Dipartimento di Informatica
E
dit
A
ttach
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