6SC-C-007-2015-12-09 (S) Studente: THE TEACHER CLASSE MATERIA DATA OGGETTO VALUTAZIONE 6SC Informatica 9/12/2015 Preparazione alla verifica di venerdì 18/12 (soluzioni) N.A. Scrivere, in linguaggio C++, i seguenti programmi. Attenzione A scopo di ripasso, si consiglia di specificare l intera struttura dei programmi richiesti, le direttive di inclusione necessarie e il riferimento a eventuali namespace. Programmi a struttura sequenziale 1. Progetto Aritmetica Scrivere un programma che richieda all utente di specificare due numeri interi e visualizzi la loro somma, la differenza, il prodotto e il quoziente. 1 2 3 4 5 6 int n = 0, m = 0; 7 int s = 0, d = 0, p = 0; 8 float q = 0; 9 10 // Richiede all'utente di inserire i due numeri 11 cout << "Inserisci il 1 numero: "; 12 cin >> n; 13 cout << "Inserisci il 2 numero: "; 14 cin >> m; 15 16 // Calcola somma, differenza, prodotto e quoziente 17 // N.B. Il quoziente di due numeri interi può essere 18 // decimale ed è necessario il casting esplicito 19 s = n + m; 20 d = n - m; 21 p = n * m; 22 q = (float) n / (float) m; 23 24 // Visualizza i risultati calcolati 25 cout << n << " + " << m << " = " << s << endl; 26 cout << n << " - " << m << " = " << d << endl; 27 cout << n << " * " << m << " = " << p << endl; 28 cout << n << " / " << m << " = " << q << endl; 29 Pagina 1 di 8
2. Convertitore euro/dollaro Scrivere un programma che richieda all utente di specificare un prezzo in euro e visualizzi la sua conversione in dollari americani, ricordando che attualmente $ 1,00 = 0,92. Si utilizzi una costante, opportunamente definita, per rappresentare il tasso di cambio tra euro e dollaro. const float EUR_USD = 0.92; float eur = 0; float usd = 0; // Richiede all'utente di specificare il prezzo in euro cout << "Inserisci il prezzo in euro: "; cin >> eur; // Calcola e visualizza la conversione in dollari; usd = eur / EUR_USD; cout << " " << eur << " = " << "$ " << usd << endl; 3. Problema dello scambio Scrivere un programma che richieda all utente di specificare due dati qualsiasi (numeri o caratteri), li memorizzi in due variabili opportune e scambi il contenuto di quest ultime. Esempio Se l utente inserisce i valori 13 e 18, il programma deve memorizzarli, rispettivamente, in due variabili x e y; quindi deve scambiare il contenuto di quest ultime, affinché x valga 18 e y valga 13. char a, b, temp; // Richiede all'utente di specificare due caratteri cout << "Inserisci il 1 dato: "; cin >> a; cout << "Inserisci il 2 dato: "; cin >> b; // Scambia i valori delle due variabili // N.B. È necessaria la variabile "di appoggio" temp temp = a; a = b; b = temp; Pagina 2 di 8
// Visualizza i valori scambiati out << "1 dato => " << a << endl; cout << "2 dato => " << b << endl; 4. Convertitore orario (prima versione) Scrivere un programma che richieda all utente di specificare un orario, in termini di ore, minuti e secondi, e ne visualizzi l equivalente in secondi. Esempio Se l utente specifica un orario pari a 17 ore, 30 minuti e 45 secondi, il programma deve restituire 63.045, dal momento che 17 ore e 30 minuti corrispondono a 63.000 secondi. int h = 0, m = 0, s = 0; int secs = 0; // Richiede all'utente di specificare l'orario cout << "Specifica le ore: "; cin >> h; cout << "Specifica i minuti: "; cin >> m; cout << "Specifica i secondi: "; cin >> s; secs = h * 60 * 60; secs = secs + m * 60; secs = secs + s; // Converte le ore // Converte i minuti // Aggiunge i secondi // Visualizza la conversione in secondi cout << "L'orario corrisponde a " << secs << " s" << endl; 5. Convertitore orario (seconda versione) Scrivere un programma che richieda all utente di specificare un numero in secondi e visualizzi l orario corrispondente in termini di ore, minuti e secondi. Esempio Se l utente inserisce il numero 18.940, il programma deve visualizzare l indicazione 5 ore, 15 minuti, 40 secondi, dal momento che 18.940 secondi corrispondono a tale orario. Si utilizzi convenientemente l operatore di divisione / per ottenere la divisione intera tra le diverse unità di tempo. Pagina 3 di 8
int secs = 0; int h = 0, m = 0, s = 0; // Richiede all'utente il dato in secondi cout << "Inserisci i secondi da convertire: "; cin >> secs; // Converte le ore e calcola il resto h = secs / (60 * 60); secs = secs - (h * 60 * 60); // Converte in minuti e calcola il resto m = secs / 60; secs = secs - (m * 60); // Assegna il resto ai secondi s = secs; // Visualizza l'orario ottenuto cout << "Orario corrispondente => " << h << "." << m << ":" << s << endl; Programmi con strutture di selezione 6. Problema del massimo (prima versione) Scrivere un programma che richieda all utente di specificare due numeri e visualizzi il massimo tra i due. int n1 = 0, n2 = 0; // Richiede all'utente di inserire i numeri cout << "Inserisci il 1 numero: "; cin >> n1; cout << "Inserisci il 2 numero: "; cin >> n2; // Determina e visualizza il valore massimo if (n1 > n2) cout << "Il massimo è " << n1 << endl; cout << "Il massimo è " << n2 << endl; 7. Progetto Divisione Scrivere un programma che richieda all utente di specificare due numeri interi e ne calcoli la divisione Pagina 4 di 8
(esatta) solo quando il divisore è diverso da 0 (in caso contrario, il programma deve visualizzare un messaggio di errore). Si ricorra al casting esplicito delle variabili per ottenere la divisione esatta tra due tipi interi. int n = 0, d = 0; float q = 0; // Richiede all'utente di inserire dividendo e divisore cout << "Inserisci il dividendo: "; cin >> n; cout << "Inserisci il divisore: "; cin >> d; // Se il divisore è diverso da 0 calcola e visualizza il quoziente, // in caso contrario mostra un messaggio di errore if (d!= 0) q = (float) n / (float) d; cout << n << " / " << d << " = " << q << endl; cout << "La divisione per 0 non ha significato" << endl; 8. Pari o dispari? Scrivere un programma che richieda all utente di specificare un numero intero; quindi stabilisca se si tratta di un numero pari o dispari. Un numero intero n è pari se la divisione intera tra n e 2 dà come resto 0. In caso contrario è dispari. int n = 0, r = 0; // Richiede all'utente di inserire il numero cout << "Inserisci un numero intero: "; cin >> n; // Calcola il resto della divisione tra n e 2 r = n - (n / 2) * 2; // Stabilisce, in base a r, se n è pari o dispari Pagina 5 di 8
if (r == 0) cout << n << " è un numero PARI." << endl; cout << n << " è un numero DISPARI." << endl; 9. Problema dell ordine (prima versione) Scrivere un programma che richieda all utente di specificare due numeri e li visualizzi in ordine crescente (dal più piccolo al più grande). int n1 = 0, n2 = 0; // Richiede all'utente di inserire i numeri cout << "Inserisci il 1 numero: "; cin >> n1; cout << "Inserisci il 2 numero: "; cin >> n2; // Confronta i due numeri per visualizzarli in ordine crescente if (n1 < n2) cout << n1 << ", " << n2 << endl; cout << n2 << ", " << n1 << endl; 10. Problema dell ordine (seconda versione) Scrivere un programma che richieda all utente di specificare tre numeri e li visualizzi in ordine crescente (dal più piccolo al più grande). int n1 = 0, n2 = 0, n3 = 0; // Richiede all'utente di inserire i numeri cout << "Inserisci il 1 numero: "; cin >> n1; cout << "Inserisci il 2 numero: "; cin >> n2; cout << "Inserisci il 3 numero: "; cin >> n3; // Confronta i tre numeri per visualizzarli in ordine crescente if (n1 < n2 && n1 < n3) if (n2 < n3) Pagina 6 di 8
cout << n1 << ", " << n2 << ", " << n3 << endl; cout << n1 << ", " << n3 << ", " << n2 << endl; if (n2 < n1 && n2 < n3) if (n1 < n3) cout << n2 << ", " << n1 << ", " << n3 << endl; cout << n2 << ", " << n3 << ", " << n1 << endl; if (n1 < n2) cout << n3 << ", " << n1 << ", " << n2 << endl; cout << n3 << ", " << n2 << ", " << n1 << endl; 11. Problema del massimo (seconda versione) Scrivere un programma che richieda all utente di specificare tre numeri e visualizzi il massimo dei tre. Il programma si può realizzare sia con condizioni semplici, sia per mezzo degli operatori logici relazionali (&& e ) per la definizione di condizioni complesse. int n1 = 0, n2 = 0, n3 = 0; // Richiede all'utente di inserire i numeri cout << "Inserisci il 1 numero: "; cin >> n1; cout << "Inserisci il 2 numero: "; cin >> n2; cout << "Inserisci il 3 numero: "; cin >> n3; // Stabilisce il massimo if (n1 > n2 && n1 > n3) cout << "Il massimo è " << n1 << endl; if (n2 > n1 && n2 > n3) cout << "Il massimo è " << n2 << endl; cout << "Il massimo è " << n3 << endl; 12. Problema dell anno bisestile Scrivere un programma che richieda all utente di specificare un anno (es. 1999) e indichi se è bisestile, Pagina 7 di 8
ricordando che un anno è bisestile se è divisibile per 4 e non è divisibile per 100, a meno che non sia anche divisibile per 400. Dato l anno specificato dall utente, si calcolino i resti delle divisioni per 4, per 100 e per 400; quindi si definiscano le condizioni opportune. int anno = 0; int r4 = 0, r100 = 0, r400 = 0; // Richiede all'utente di inserire l'anno cout << "Inserisci l'anno: "; cin >> anno; // Calcola i resti delle divisioni per 4, 100 e 400 r4 = anno - (anno / 4) * 4; r100 = anno - (anno / 100) * 100; r400 = anno - (anno / 400) * 400; // Verifica se l'anno è bisestile, in base ai resti ottenuti if (r4 == 0 && r100!= 0 r400 == 0) cout << "L'anno " << anno << " È BISESTILE" << endl; cout << "L'anno " << anno << " NON È BISESTILE" << endl; Pagina 8 di 8