Informatica e elementi di informatica medica Laboratori del 9 e del 12 Aprile 2010
Calcolo geometrico 1 Esercizio 1: Calcolo geometrico Scrivere un programma che chieda all utente di indicare la lunghezza di un segmento, e che chieda all utente se vuole conoscere: l area e il perimetro del quadrato che ha il segmento come lato, oppure l area e il perimetro del traiangolo equilatero che ha il segmento come lato, oppure l area e il perimetro del cerchio che ha il segmento come raggio. Dopo che l utente ha formulato la propria scelta il programma deve procedere con il calcolo appropriato. Soluzione # include <stdio.h> # include <stdlib.h> # define pi_greco 3.14 int main() float lunghezza_segmento; float perimetro, area; int scelta; printf( Inserisci la lunghezza del segmento: ); scanf( %f,& lunghezza_segmento); if( lunghezza_segmento <= 0 ) printf( Errore: i segmenti di dimensione negativa o nulla non esistono! ); printf( Inserisci:\ n[1] Per calcolare perimetro e area del quadrato\n[2] Per calcolare perimetro e area del triangolo\n[3] Per calcolare perimetro e area del cerchio\n ); scanf( %d,&scelta); switch( scelta ) case 1: perimetro = 4.0 * lunghezza_segmento; area = lunghezza_segmento * lunghezza_segmento; printf( L area del quadrato di lato %f vale: %f, mentre il perimetro vale: %f\ n, lunghezza_segmento, area, perimetro); case 2: perimetro = 3.0 * lunghezza_segmento; area = ( 1.732051 / 4.0 ) * lunghezza_segmento * lunghezza_segmento; printf( L area del triangolo equilatero di lato %f vale: %f, mentre il perimetro vale: %f\n, lunghezza_segmento, area, perimetro);
Calcolo geometrico 2 case 3: perimetro = 2.0 * pi_greco * lunghezza_segmento; area = pi_greco * lunghezza_segmento * lunghezza_segmento; printf( L area del cerchio di raggio %f vale: %f, mentre il perimetro vale: %f \n, lunghezza_segmento, area, perimetro); default: printf( Scelta non valida!\ n ); system( PAUSE );
L ingresso in discoteca 3 Esercizio 2: L ingresso in discoteca Scrivere un programma in linguaggio C che gestisca l ingresso di una discoteca, chiedendo all utente: la sua età, il suo sesso, e se l utente è un uomo, si deve chiedere se è accompagnato da una donna. Se l utente ha meno di 18 anni non può entrare in discoteca, se ha un età compresa tra i 18 e 20 anni allora può entrare ma non può bere alcolici, mentre se ha almeno 21 anni può non solo entrare ma anche bere alcolici. Se l utente è una donna allora non paga l ingresso, invece se è un uomo paga: 35 euro se non è accompagnato da una donna, 10 euro se è accompagnato da una donna. Soluzione # include <stdio.h> # include <stdlib.h> int main() int eta; char sesso, accompagnato; printf( Inserisci la tua eta : ); scanf( %d, &eta); if( eta < 0 ) printf( Ancora devi nascere...\n ); printf( Inserisci il tuo sesso [M/F]: ); scanf( %c, &sesso); if( sesso == m sesso == M ) sesso = M ; if( sesso == f sesso == F ) sesso = F ;
L ingresso in discoteca 4 printf( Sei di sesso indefinito!\ n ); if( eta < 18 ) printf( Mi dispiace, non puoi entrare.\ n ); if( eta < 21) printf( Puoi entrare ma non puoi bere alcolici.\ n ); printf( Puoi entrare e puoi bere alcolici.\ n ); if( sesso == M ) printf( Sei accompagnato da un donna? [S/N]: ); scanf( %c, &accompagnato); if( accompagnato == s accompagnato == S ) printf( Dato che sei accompagnato da una donna hai diritto all ingresso ridotto, paghi solo 10 euro.\ n ); if( accompagnato == n accompagnato == N ) printf( Dato che non sei accompagnato da una donna non hai diritto all ingresso ridotto, paghi 35 euro.\ n ); printf( Sei confuso?\n ); printf( Non paghi l entrata in discoteca perche sei una donna.\ n ); system( PAUSE );
Il distributore automatico 5 Esercizio 3: Il distributore automatico Dato un ditributore dotato dei seguenti prodotti: bibite in lattina, prezzo: 0.90 euro, bottigliette d acqua, prezzo: 0.35 euro, caffè, prezzo: 0.40 euro, merendine, prezzo: 1.25 euro, e che accetta le seguenti monete: 0.05 euro, 0.10 euro, 0.20 euro, 0.50 euro, 1.00 euro, e 2.00 euro, scrivere un programma in linguaggio C che consenta all utente di inserire le monete, scegliere il prodotto desiderato, riutilizzare il credito per altre selezioni, ed infine ritirare il resto. Soluzione # include <stdio.h> # include <stdlib.h> # define costo_lattina 0.90 # define costo_acqua 0.35 # define costo_caffe 0.40 # define costo_merendina 1.25 int main() float credito = 0.0; char erogato; int scelta; do printf( Digitare:\n ); printf( [1] per inserire una moneta da 0.05 euro\n ); printf( [2] per inserire una moneta da 0.10 euro\n );
Il distributore automatico 6 printf( [3] per inserire una moneta da 0.20 euro\n ); printf( [4] per inserire una moneta da 0.50 euro\n ); printf( [5] per inserire una moneta da 1.00 euro\n ); printf( [6] per inserire una moneta da 2.00 euro\n ); printf( [7] per selezionare una lattina, costo: %f\n, costo_lattina); printf( [8] per selezionare una bottiglietta di acqua, costo: %f\n, costo_acqua ); printf( [9] per selezionare un caffe, costo: %f\n, costo_caffe); printf( [10] per selezionare una merendina, costo: %f\n, costo_merendina); printf( Digitare qualunque altro numero intero per ritirare il credito e abbandonare il programma.\ n\n ); printf( [ credito: %f] Inserisci selezione:, credito); scanf( %d,&scelta); printf( \n ); erogato = 0; switch( scelta ) case 1: credito += 0.05; case 2: credito += 0.10; case 3: credito += 0.20; case 4: credito += 0.50; case 5: credito += 1.00; case 6: credito += 2.00; case 7: if( credito < costo_lattina ) printf( \n***************************************************\ n ); printf( Non hai abbastanza credito per comprare una lattina.\ n ); printf( ***************************************************\ n ); credito = credito - costo_lattina; erogato = 1; case 8: if( credito < costo_acqua )
Il distributore automatico 7 printf( \n***************************************************\ n ); printf( Non hai abbastanza credito per comprare una bottiglietta d acqua.\n ); printf( ***************************************************\ n ); credito = credito - costo_acqua; erogato = 1; case 9: if( credito < costo_caffe ) printf( \n***************************************************\ n ); printf( Non hai abbastanza credito per comprare un caffe.\n ); printf( ***************************************************\ n ); credito = credito - costo_caffe; erogato = 1; case 10: if( credito < costo_merendina ) printf( \n***************************************************\ n ); printf( Non hai abbastanza credito per comprare una merendina.\ n ); printf( ***************************************************\ n ); credito = credito - costo_merendina; erogato = 1; default: printf( \n***************************************************\ n ); printf( Il tuo resto e : %f\n, credito); printf( ***************************************************\ n ); if( erogato ) printf( \n***************************************************\ n ); printf( Erogazione effettuata.\ n ); printf( ***************************************************\ n ); printf( \n ); while( scelta > 0 && scelta < 11 ); system( PAUSE );
Il distributore automatico 8
Statistiche sulla temperatura corporea di un paziente 9 Esercizio 4: Statistiche sulla temperatura corporea di un paziente Si scriva un programma in linguaggio C che chieda all utente di fornire le misure della temperatura corporea di un paziente rilevate nell arco di 7 giorni, e che offra all utente la possibilità di conoscere, a sua scelta, una delle seguenti informazioni: la temperatura corporea media del paziente, la temperatura massima, la temperatura minima, per quanti giorni il paziente ha avuto la febbre, la temperatura di uno dei giorni, per quanti giorni l utente ha avuto la temperatura corporea al di sotto di un certo valore specificato dall utente stesso, per quanti giorni l utente ha avuto la temperatura corporea al di sopra di un certo valore specificato dall utente stesso. Per memorizzare le temperature si usi un arrary. Soluzione # include <stdio.h> # include <stdlib.h> # define GIORNI 7 # define SOGLIA_FEBBRE 37.0 int main() float temperature[ GIORNI ]; float temperatura_media, temperatura_massima, temperatura_minima; float soglia_di_temperatura; int conteggio; int i, giorni_febbre, giorno_scelto, scelta; giorni_febbre = 0; printf( Inserisci la temperatura del paziente del giorno 1: ); scanf( %f, &temperature[ 0 ]); temperatura_media = temperature[ 0 ]; temperatura_minima = temperature[ 0 ]; temperatura_massima = temperature[ 0 ]; for( i = 1; i < GIORNI; i++ )
Statistiche sulla temperatura corporea di un paziente 10 printf( Inserisci la temperatura del paziente del giorno %d:, i + 1); scanf( %f, &temperature[ i ]); temperatura_media += temperature[ i ]; if( temperature[ i ] < temperatura_minima ) temperatura_minima = temperature[ i ]; if( temperature[ i ] > temperatura_massima ) temperatura_massima = temperature[ i ]; if( temperature[ i ] > SOGLIA_FEBBRE ) giorni_febbre ++; temperatura_media = temperatura_media / GIORNI; do printf( \ncosa vuoi sapere?\n ); printf( [1] la temperatura media del paziente\n ); printf( [2] la temperatura massima del paziente\n ); printf( [3] la temperatura minima del paziente\n ); printf( [4] quanti giorni il paziente ha avuto la febbre\n ); printf( [5] la temperatura di uno dei giorni\n ); printf( [6] quante volte il paziente ha avuto la temperatura corporea al di sotto di un certo valore\n ); printf( [7] quante volte il paziente ha avuto la temperatura corporea al di sopra di un certo valore\n ); printf( digita qualunque altro numero intero per interrompere il programma\ nscelta: ); scanf( %d, &scelta); switch( scelta ) case 1: printf( La temperatura media del paziente e : %f\n, temperatura_media); case 2: printf( La temperatura massima del paziente e : %f\n, temperatura_massima); case 3: printf( La temperatura minima del paziente e : %f\n, temperatura_minima); case 4: printf( Il paziente ha avuto la febbre per %d giorni\n, giorni_febbre); case 5: printf( Inserisci il giorno di cui vuoi conoscere la temperatura [1,% d]:, GIORNI); scanf( %d, &giorno_scelto); if( giorno_scelto < 1 giorno_scelto > GIORNI ) printf( Hai inserito un giorno non valido!\ n ); printf( La temperatura del giorno %d e stata: %f\n, giorno_scelto, temperature[ giorno_scelto - 1 ]);
Statistiche sulla temperatura corporea di un paziente 11 case 6: printf( Inserisci la soglia di temperatura: ); scanf( %f,& soglia_di_temperatura); conteggio = 0; for( i = 0; i < GIORNI; i++ ) if( temperature[ i ] < soglia_di_temperatura ) conteggio ++; printf( Il numero di giorni in cui il paziente ha avuto la temperatura corporea al di sotto della soglia e : %d\n, conteggio); case 7: printf( Inserisci la soglia di temperatura: ); scanf( %f,& soglia_di_temperatura); conteggio = 0; for( i = 0; i < GIORNI; i++ ) if( temperature[ i ] > soglia_di_temperatura ) conteggio ++; printf( Il numero di giorni in cui il paziente ha avuto la temperatura corporea al di sopra della soglia e : %d\n, conteggio); default: printf( Interrompo il programma\n ); while( scelta > 0 && scelta < 8 ); system( PAUSE );
Conversione da base 10 a base 2 12 Esercizio 5: Conversione da base 10 a base 2 Si scriva un programma in linguaggio C che converta un numero (intero senza segno) in base 10 fornito dall utente nella sua rappresentazione in base 2.