Laboratorio di calcolo I
AA 2008/09
Prova individuale del 23/1/2009
Usate come account didXXv con XX=numero del PC, create una
cartella prova_cognome e svolgete li' la prova. La prova e' valutata su
10 punti.
Se il programma non compila perdete 5
punti, se il programma compila ma
ha seri problemi in fase di esecuzione (loop infiniti, mancanza di
protezioni...) perdete 3 punti, se il programma compila, gira ma non
fornisce i risultati richiesti perdete 2 punti. I punti rimanenti
possono essere ulteriormente ridotti se non sono state seguite tutte le
indicazioni (ad esempio se si sceglie di non utilizzare delle funzioni)
o se si omette di stampare il risultato o di specificare quali valori
ci si
aspetta che l'utente inserisca, o se il programma non sia comprensibile
per mancanza di commenti.
Se avete bisogno di usare come esempio programmi svolti nel corso delle esercitazioni precedenti potete trovarne al link programmi
Scrivete un programma che risolva le equazioni di secondo grado:
dati A, B e C si cerca (se esiste) uno o due valori di x tali che Ax2+Bx+C=0,
ovvero
- si determina il discriminante D=B2-4AC
- se D e' nullo esiste un'unica soluzione pari a -B/(2A)
- se D e' positivo non nullo ne esistono due, (-B+sqrt(D))/(2A) e
(-B-sqrt(D))/(2A)
- se D e' negativo l'equazione non ammette soluzioni
- mediante un ciclo while consentite all'utente di eseguire
nuovamente le
istruzioni precedenti inserendo dei nuovi valori di input uscendo dal
programma solo se richiesto
Suggerimenti:
- prevedere 4 funzioni, una per il calcolo del discriminante, una
per la soluzione degenere nel caso di discriminante nullo, e una per
ciascuna delle due soluzioni in caso di discriminante positivo
- scrivere un file .h con i prototipi delle funzioni
- scrivere un file .c contenente le funzioni inizialmente vuote
(con
solo un return di un valore a scelta;)
- scrivere un file .c contenente il programma main
- nel main leggere i 3 coefficienti del polinomio di secondo grado,
calcolare il discriminante e scegliere come precedere in base al valore
di questo
- solo quando questa parte compila e gira dedicatevi allo
sviluppo degli algoritmi da inserire nelle
funzioni e alla validazione dei risultati.
- se non riuscite a completare qualcosa lasciate il programma in
uno
stato in cui compili e giri e aggiungetevi una stampa che informi
l'utente di quali funzionalita' non sono ancora attive.