Esercizi di programmazione in linguaggio C - Costrutto selezione

Documenti analoghi
Esercizi di programmazione in linguaggio C - Costrutto selezione

Esercizi di programmazione in linguaggio C - Costrutto selezione

Strutture di controllo

Scelte ed alternative. Esercizi risolti

Esercizi di programmazione in linguaggio C - Costrutto iterazione

Istruzioni decisionali

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Lab 03 Istruzioni Prima Parte"

Lab 04 Programmazione Strutturata"

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

IEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -

Lab 04 (parte A) Programmazione Strutturata

2 Operatori matematici e costrutto if

Istruzioni Condizionali in C

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Esempi comparati while, do...while

Fondamenti di Informatica L-A

Costrutto if. Come utilizzare il costrutto condizionale if

2 Operatori matematici e costrutto if

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char

Scelte ed alternative

Alcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli

Fondamenti di Informatica: Ingegneria Meccanica Prova scritta del 12 luglio 2008

INFORMATICA. Strutture condizionali

do { printf("inserisci due numeri reali:"); scanf("%f %f", &a, &b);

Scelte ed alternative

2 Operatori matematici e costrutto if

Esercizi di programmazione in C

LABORATORIO di INFORMATICA

Fondamenti di Informatica T1. Lab 03 Istruzioni. Lab03 1

Esercizi di programmazione Fare almeno 5 esercizi per ogni tipologia proposta.

Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione

Esercitazione 2. Corso di Fondamenti di Informatica

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi seconde

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo

2 Operatori matematici e costrutto if

Scelte ed alternative

Corso di Fondamenti di Programmazione canale E-O ... Un esempio per iniziare. printf) Altri cenni su printf() Esercizi 8. (printf(

Programmazione C Massimo Callisto De Donato

Caratteristiche di un calcolatore elettronico

Esercitazione 2. Espressioni booleane Il comando if-else

Fondamenti di Informatica L-A

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Laboratorio di Informatica Ingegneria Clinica Lezione 7/11/2011. Prof. Raffaele Nicolussi

PROGRAMMAZIONE: Le strutture di controllo

Unità 3 Istruzioni condizionali

Istruzioni Condizionali

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

laboratorio di python

ESEMPIO: le variabili LETTURA/SCRITTURA DI VARIABILI. Specifica Leggere da tastiera un intero, un carattere, un float e un double. Stamparli a video.

ESEMPIO 1. #include <math.h> void eq2gr(float a, float b, float c, int* reali, float* x1,float* x2)

Corso sul linguaggio C

Programmare in C. Esempio: Algoritmo del Risveglio

SOLUZIONE ESERCIZIO 1

Istruzioni Condizionali

Esercitazione 2. Variabili e Tipi Input e Output Assegnamenti Il comando if-else

IEIM Esercitazione 1I Array. Alessandro A. Nacci -

Laboratorio. Due. 1) Switch 2) Costrutti Iterazione (For, While, do while)

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

Strutture di Controllo

Switch. Unità 3. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi. Filtraggio

Esecuzione condizionale. Esecuzione condizionale. Costrutto if. Costrutto if

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

VT = { +, -, *, /, (, ), 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 } VN = {<E>, <T>, <F>, <num>, <cifra>, <cifra-non-nulla> }

PROGRAMMAZIONE: La selezione

Parte Input e output in linguaggio i C. 3. Programmazione strutturata 1 (if, switch, comunque segnalare dei warning

Esercizio 1 Progettare un algoritmo che, dati in ingresso la base e l altezza di un rettangolo, ne calcoli l area e il perimetro.

Laboratorio di Python

INFORMATICA Prof. Cassano

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Lab 06 Funzioni semplici

Strutture di Controllo

Esercitazione 3. Espressioni booleane I comandi if-else e while

Strutture di Controllo

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Linguaggio C++ 5. Strutture cicliche

Fondamenti di Informatica T-1 Modulo 2

Switch. Unità 3. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Laboratorio di Programmazione

ESERCIZI DI PROGRAMMAZIONE C/C++

Esercizi di programmazione in C

Esercizio 1. Esercizio 1 - Soluzione

while Istruzione while Cicli ed iterazioni Istruzioni di ripetizione in C Comportamento del while

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Lab 06 Funzioni semplici

Espressioni semplici e condizionali

Istruzioni decisionali

Primo programma in C Esercizi risolti

Le funzioni, e le istruzioni di input/output

Transcript:

Esercizi di programmazione in linguaggio C - Costrutto selezione prof. Roberto uligni 1. [confronto1] - Scrivere un programma che, richiesti in ingresso due valori interi distinti, ne determini il maggiore. 2. [confronto2] Scrivere un programma che, richiesti due numeri interi qualsiasi, segnali se i due numeri sono uguali; in caso contrario indichi il minore e il maggiore. 3. [sconto] - Un negoziante per ogni spesa di importo superiore a 100 effettua uno sconto del 5%, del 10% per ogni spesa superiore a 300. Scrivere un programma che richieda all'utente l'ammontare della spesa e visualizzi quindi l'importo effettivo da pagare. 4. [trenumeri] - Scrivere un programma che, richiesti in input tre numeri interi, visualizzi a seconda dei casi una delle seguenti risposte: Tutti uguali Due uguali e uno diverso Tutti diversi 5. [tipotriangolo] - Scrivere un programma che, lette le misure dei lati di un triangolo, visualizzi se il triangolo è equilatero, isoscele o scaleno. 6. [biglietto] Su una linea ferroviaria, rispetto alla tariffa piena, gli utenti pensionati usufruiscono di uno sconto del 10%, gli studenti del 15% e i disoccupati del 25%. Codificando i pensionati con una P, gli studenti con una S e i disoccupati con una D, scrivere un programma che, richiesto il costo di un biglietto e l'eventuale condizione particolare dell'utente, visualizzi l'importo da pagare. 7. [menuscelta] Scrivere un programma che visualizzi il seguente menu: MENU DI PROA - premere: a) Per immettere dati b) Per determinare il maggiore c) Per determinare il minore d) Per ordinare e) Per visualizzare Scelta: _ attenda l'immissione di un carattere da parte dell'utente e infine, usando il costrutto switch, visualizzi una scritta corrispondente alla scelta effettuata (per esempio del tipo: In esecuzione l'opzione a). Se la scelta non è tra quelle proposte (a,b,c,d,e) deve invece essere visualizzata la scritta Opzione inesistente. 8. [equazione1g] Scrivere un programma che risolva l'equazione di primo grado ax = b, visualizzando a seconda dei casi la soluzione, la scritta equazione indeterminata oppure equazione impossibile. I coefficienti reali a e b devono essere richiesti in input all'utente. Nelle pagine successive sono indicate le soluzioni degli esercizi che riportano il simbolo. 1

9. [equazione2g] - Scrivere un programma per risolvere l'equazione di secondo grado ax 2 + bx + c = 0, essendo a, b, c coefficienti reali richiesti in input all'utente. Il programma deve comunicare, a seconda dei casi, le due soluzioni oppure la scritta Non esistono soluzioni reali. 10. [idraulico] - Un idraulico chiede 40,00 per un'ora di lavoro, più il costo del materiale, con un minimo di 100,00 per ogni lavoro. Scrivere un programma che, dati in input il costo del materiale e il numero di ore lavorative, determini la spesa totale, facendola ammontare al limite minimo quando previsto. 11. [misura] Durante un esperimento di fisica, si ripete la misura del tempo di oscillazione di un pendolo per tre volte, ottenendo valori di volta in volta diversi. Per questo motivo, si decide di esprimere la misura attraverso il valor medio e di indicare l incertezza mediante la semidispersione massima, cioè la semidifferenza tra i valori massimo e minimo: (t max t min ) / 2. Scrivere un programma che, richiesti in input i tre tempi in secondi, visualizzi la misura completa nel formato: t medio ± incertezza Per esempio, inserendo i tempi: 4.5, 4.7, 4.6, l output del programma deve essere: (4.6 ± 0.1) s. 12. [giudizio] Nell ambito di un data disciplina, uno studente effettua tre verifiche e ottiene, per ciascuna di esse, uno voto espresso con un numero intero. Alla fine dell anno, l insegnante determina la media aritmetica dei tre voti (la media è in generale un numero reale) e formula un giudizio sulla base delle seguenti regole: alore della media M < 4.5 Giudizio espresso 4.5 M < 6.0 Insufficiente 6.0 M < 7.5 Sufficiente M 7.5 Gravemente insufficiente Buono Scrivere un programma che richieda l inserimento da tastiera dei tre voti e, dopo averne determinato la media, mostri il giudizio corrispondente. 13. [gita] In una certa scuola le visite d istruzione sono organizzate secondo il seguente schema: Classi prime: tutte le prime visiteranno Il museo egizio di Torino Classi seconde: la 2^A visiterà il Duomo di Milano, tutte le altre seconde visiteranno il Castello Sforzesco di Milano Classi terze: tutte le terze visiteranno le Gallerie degli Uffizi di irenze Classi quarte: la 4^B visiterà il Colosseo a Roma, la 4^C il Pantheon a Roma, tutte le altre quarte i Musei aticani. Classi quinte: tutte le quinte visiteranno il Cern di Ginevra. Scrivere un programma che richieda la classe (un numero intero tra 1 e 5), la sezione (una lettera maiuscola) e indichi la meta prevista sulla base dello schema precedente. Nelle pagine successive sono indicate le soluzioni degli esercizi che riportano il simbolo. 2

14. [controllodata] Scrivere un programma che richieda l inserimento da tastiera di tre numeri interi g, m, a (si ipotizza che a sia sempre un numero dispari). Successivamente il programma deve indicare se i tre numeri formano una data valida nel formato g/m/a. Esempio: inserendo rispettivamente i valori 3, 5, 2017 oppure 30, 4, 2003, il messaggio da riportare è "DATA ALIDA" in quanto esistono i giorni 3/5/2017 e 30/4/2003. iceversa, inserendo per esempio i valori 33, 7, 2015, oppure 27, 14, 2011, il messaggio da visualizzare è "DATA NON ALIDA" perché i giorni 33/7/2015 e 27/14/2011 non esistono. Nota: si ricorda che il dato a, in questo problema, è sempre dispari: gli anni dispari non sono mai bisestili. 15. [triangolorett] Scrivere un programma che, richieste in input le misure intere dei lati di un triangolo, indichi se il triangolo è rettangolo. 16. [muro] Il Muro di Berlino è stato demolito nel 1989. Scrivere un programma che richieda l anno di nascita dell utente e dica se tale utente è nato nell anno della caduta del Muro oppure quanti anni prima o dopo la caduta (per esempio, se l utente è nato nel 1982, il messaggio da visualizzare è L utente è nato 7 anni prima della caduta del Muro di Berlino ). Nelle pagine successive sono indicate le soluzioni degli esercizi che riportano il simbolo. 3

Soluzioni di alcuni esercizi Esercizio n. 2 (confronto2) Diagramma a blocchi Inizio a, b I a = b "Numeri uguali" O a < b "Minore:", a, "Maggiore:", b O "Minore:", b, "Maggiore:", a O ine Programma / confronto2.c Segnala se due numeri interi dati in input sono uguali. In caso contrario, indica il maggiore e il minore. / #include <stdio.h> int main(void) { int a, b; printf("inserire due numeri interi: "); scanf("%d%d", &a, &b); if (a == b) { printf("i due numeri sono uguali\n"); else { if (a < b) { printf("minore: %d Maggiore: %d\n", a, b); else { printf("minore: %d Maggiore: %d\n", b, a); return 0; 4

Esercizio n. 6 (biglietto) Pseudocodifica ALGORITMO biglietto ARIABILI costo_iniz: REALE categoria: CARATTERE; perc_sconto, sconto: REALE importo: REALE COSTANTI PERC_SCONTO_PENSIONATI = 0.10 PERC_SCONTO_STUDENTI = 0.15 PERC_SCONTO_DISOCCUPATI = 0.25 INIZIO SCRII("Costo iniziale del biglietto (Euro): ") LEGGI(costo_iniz) SCRII("P Pensionato") SCRII("S - Studente") SCRII("D Disoccupato") SCRII("A - Altro") SCRII("Categoria utente (P/S/D/A): ") LEGGI(categoria) NEL CASO CHE categoria SIA 'P': perc_sconto PERC_SCONTO_PENSIONATI 'S': perc_sconto PERC_SCONTO_STUDENTI 'D': perc_sconto PERC_SCONTO_DISOCCUPATI ALTRIMENTI perc_sconto 0 INECASO sconto perc_sconto costo_iniz; importo costo_iniz - sconto; INE SCRII("Importo scontato (Euro): ", importo) 5

Programma / biglietto.c Calcola il costo di un biglietto ferroviario applicando uno sconto in base alla tipologia di utente / #include <stdio.h> #define PERC_SCONTO_PENSIONATI 0.10 #define PERC_SCONTO_STUDENTI 0.15 #define PERC_SCONTO_DISOCCUPATI 0.25 int main(void) { float costo_iniz; char categoria; float perc_sconto, sconto; float importo; printf("costo iniziale del biglietto (Euro): "); scanf("%f", &costo_iniz); printf("\np - Pensionato\nS - Studente\n"); printf("d - Disoccupato\nA - Altro\n"); printf("\ncategoria utente (P/S/D/A): "); // Si noti il carattere di newline, prima del placeholder %c, // per rimuovere dal buffer il "ritorno a capo" scanf("\n%c", &categoria); switch (categoria) { case 'P': perc_sconto = PERC_SCONTO_PENSIONATI; case 'S': perc_sconto = PERC_SCONTO_STUDENTI; case 'D': perc_sconto = PERC_SCONTO_DISOCCUPATI; default: perc_sconto = 0.0; sconto = perc_sconto costo_iniz; importo = costo_iniz - sconto; printf("\nimporto scontato (Euro): %8.2f\n", importo); return 0; 6

Esercizio n. 7 (menuscelta) Programma / menuscelta.c Mostra un menu' di scelte. Esegue un'operazione in base alla scelta effettuata / #include <stdio.h> int main(void) { char scelta; printf("menu DI PROA - premere:\n\n"); printf("a) Per immettere dati\n"); printf("b) Per determinare il maggiore\n"); printf("c) Per determinare il minore\n"); printf("d) Per ordinare\n"); printf("e) Per visualizzare\n"); printf("\n\tscelta: "); scanf("%c", &scelta); switch (scelta) { case 'a': printf("\nin esecuzione l'opzione a\n"); case 'b': printf("\nin esecuzione l'opzione b\n"); case 'c': printf("\nin esecuzione l'opzione c\n"); case 'd': printf("\nin esecuzione l'opzione d\n"); case 'e': printf("\nin esecuzione l'opzione e\n"); default: printf("\nopzione inesistente\n"); return 0; 7

Esercizio n. 8 (equazione1g) Analisi del problema Il risultato prodotto in output dipende dal valore assunto dal coefficiente a: se, l'equazione ammette soluzione se, l'equazione è indeterminata se, l'equazione è impossibile Specifiche funzionali Dati iniziali: Dati intermedi: Dati finali: a, b: coefficienti dell'equazione x: soluzione dell'equazione Pseudocodifica ALGORITMO equazione1g ARIABILI a, b: REALE x: REALE INIZIO SCRII("Coefficienti a,b: ") LEGGI(a, b) SE a <> 0 ALLORA x b / a SCRII("Soluzione: ", x) ALTRIMENTI SE b = 0 ALLORA SCRII("Eq. indeterminata") ALTRIMENTI SCRII("Eq. impossibile") INE Programma / equazione1g.c Determina la soluzione dell'equazione di primo grado ax = b / #include <stdio.h> int main(void) { double a,b; double x; printf("coefficienti a,b dell'equazione ax=b: "); scanf("%lf %lf", &a, &b); if (a!= 0) { x = b / a; printf("soluzione x = %lf\n", x); else { if (b == 0) { printf("equazione indeterminata"); else { printf("equazione impossibile"); return 0; 8

Esercizio n. 11 (misura) Diagramma a blocchi Inizio t1, t2, t3 I t1 > t2 t1 > t3 t2 > t3 tmax = t1 tmax = t3 tmax = t2 tmax = t3 t1 < t2 t1 < t3 t2 < t3 tmin = t1 tmin = t3 tmin = t2 tmin = t3 tmedio (t1 + t2 + t3) / 3 incert (tmax - tmin) / 2 tmedio, incert O ine 9

Programma / misura.c Determina la migliore stima e l'incertezza di tre misure di tempo / #include <stdio.h> int main(void) { double t1, t2, t3; double tmin, tmax, tmedio, incert; printf("inserire i tre valori di tempo (s): "); scanf("%lf%lf%lf", &t1, &t2, &t3); // Determinazione del valore massimo if (t1 > t2) { if (t1 > t3) { tmax = t1; else { tmax = t3; else { if (t2 > t3) { tmax = t2; else { tmax = t3; // Determinazione del valore minimo if (t1 < t2) { if (t1 < t3) { tmin = t1; else { tmin = t3; else { if (t2 < t3) { tmin = t2; else { tmin = t3; // Calcolo del valore medio e dell'incertezza assoluta tmedio = (t1 + t2 + t3) / 3.0; incert = (tmax - tmin) / 2.0; // Per visualizzare correttamente il simbolo ± nella finestra // di console, utilizzare la sequenza di escape \x1 (il carattere // ha codice ASCII 241, corrispondente a 1 in esadecimale) printf("misura: (%.2lf \x1 %.2lf) s\n", tmedio, incert); return 0; 10

Esercizio n. 15 (triangolorett) Analisi del problema In un triangolo rettangolo di ipotenusa i e cateti c 1 e c 2, l ipotenusa è il lato di lunghezza maggiore. Per il teorema di Pitagora, vale inoltre la relazione: da cui segue: Un triangolo è rettangolo se, detti i il lato più lungo e c 1 e c 2 gli altri due lati, l espressione è uguale a zero. Specifiche funzionali Dati iniziali: Dati intermedi: Dati finali: a, b, c: lunghezze intere dei lati del triangolo espr: risultato dell espressione Nessuno Pseudocodifica ALGORITMO triangolorett ARIABILI a, b, c: INTERO espr: INTERO INIZIO SCRII("Inserire le lunghezze intere dei tre lati: ") LEGGI(a, b, c) INE SE (a > b) E (a > c) ALLORA espr a 2 b 2 c 2 ALTRIMENTI SE (b > a) E (b > c) ALLORA espr b 2 a 2 c 2 ALTRIMENTI espr c 2 a 2 b 2 SE espr = 0 ALLORA SCRII("Il triangolo è rettangolo ) ALTRIMENTI SCRII("Il triangolo non è rettangolo ) 11

Programma / triangolorett.c Indica se un triangolo e rettangolo date le misure intere dei suoi lati. / #include <stdio.h> int main(void) { int a, b, c; int espr; printf("inserire le lunghezze intere dei tre lati: "); scanf("%d%d%d", &a, &b, &c); if (a > b && a > c) espr = aa - bb - cc; / Il lato a e' il piu' lungo e quindi potrebbe / / essere l'ipotenusa / else { if (b > a && b > c) espr = bb - aa - cc; / Il lato b e' il piu' lungo / else espr = cc - aa - bb; / Il lato c e' il piu' lungo / if (espr == 0) printf("il triangolo e' rettangolo\n"); else printf("il triangolo non e' rettangolo\n"); return 0; 12