Sequenza

  1. Hello World! Scrivi un programma che visualizza sul monitor il messaggio "Hello World!". Modifica poi il programma in modo da visualizzare le due parole “Hello” e “World” su due righe diverse.
  2. Sessagesimale/1 Data una quantità espressa in ore, minuti e secondi, calcolare la quantità equivalente in secondi.
  3. Sessagesimale/2 Data una quantità espressa in secondi, calcolare la quantità equivalente in ore, minuti e secondi.
  4. Perimetro e area del triangolo Note le misure dei tre lati di un triangolo, scrivi un programma che calcoli l'area (con la formula di Erone) e il perimetro. Attenzione: anche se le misure dei lati fossero interi, l'area quasi certamente non lo è...
  5. Perimetro e area del rettangolo Note le misure di due lati consecutivi di un rettangolo, scrivi un programma che calcoli l'area e il perimetro.
  6. Perimetro e area del cerchio Scrivi un programma che consenta di calcolare l'area del cerchio in base al valore del raggio. Il programma dovrà quindi richiedere all'utente il valore del raggio (un numero reale) e mostrare l'area del cerchio corrispondente. Attenzione: anche se il raggio è intero, perimetro e area certamente non lo sono...
  7. Media aritmetica, geometrica e armonica/1 Scrivi un programma che dati in input due numeri interi, calcoli e stampi la media aritmetica, la media geometrica e la media armonica. Attenzione: anche se i numeri in input sono interi, le medie quasi certamente non lo sono...
  8. Media aritmetica, geometrica e armonica/2 Scrivi un programma che dati in input tre numeri interi, calcoli e stampi la media aritmetica, la media geometrica e la media armonica. Attenzione: anche se i numeri in input sono interi, le medie quasi certamente non lo sono...
  9. Prezzo e sconto Scrivi un programma che dati in input il prezzo di un capo di abbigliamento e lo sconto in percentuale applicato, ne determini il prezzo scontato. Attenzione: anche se i numeri in input sono interi, il prezzo scontato potrebbe non esserlo...
  10. Età di una persona Scrivi un algoritmo che dato in input l'anno di nascita di una persona, fornisca in output la sua età.
  11. Equazione di primo grado Scrivi un algoritmo che calcoli la soluzione dell'equazione di primo grado a*x+b=0 nel caso in cui a≠0.
  12. Calcolo litri di vino Supponiamo di essere andati da un contadino a comprare il vino. Il contadino ci vende il vino a 1,70€ il litro e i contenitori (da 8 litri) a 5€. Costruisci un algoritmo che ricevuto in input il numero di litri acquistati, comunichi l'importo da pagare. Suggerimento: partendo dal numero di litri, calcolare il numero dei contenitori necessari per contenerlo...
  13. Quadrati Dati due numeri in input, calcolare i quadrati dei due numeri e visualizzarli.
  14. Pitagora Dati due numeri reali in input che rappresentano la lunghezza dei due cateti di un triangolo rettangolo, calcolare la lunghezza dell'ipotenusa e visualizzarla.

Selezione

  1. Valore assoluto Scrivi un programma che richiede all'utente un numero reale x, e calcola il valore assoluto di x.
  2. Maggiorenni e minorenni Scrivi un programma che stabilisce se una persona è maggiorenne o minorenne in base all'età.
  3. Angoli Scrivi un programma che richiede all'utente la misura dell'angolo di un triangolo (un numero reale compreso tra 0 e 180) e comunica se l'angolo è retto, acuto o ottuso.
  4. Classificazione triangoli secondo i lati Scrivi un programma che richiede all'utente le misure dei tre lati di un triangolo, e comunica se il triangolo è equilatero, isoscele o scaleno.
  5. Classificazione triangoli secondo gli angoli Scrivi un programma che richiede all'utente le misure dei tre lati di un triangolo, e comunica se il triangolo è equiangolo, acutangolo, rettangolo, ottusangolo.
  6. Ordinare tre valori Scrivi un programma che richiede all'utente tre numeri reali e li visualizza in ordine crescente. Esempio: Inserisci tre numeri: 8 4 10 I tre numeri in ordine sono: 4 8 10 Suggerimento: dati tre valori, esistono sei possibili modi in cui questi possono essere ordinati: abc, acb, bac, bca, cab, cba.
  7. Equazioni di primo grado Scrivi un programma che consenta di risolvere equazioni di primo grado a coefficienti reali, ax +b = 0. Il programma deve segnalare opportunamente il caso di equazione impossibile o indeterminata.
  8. Equazioni di secondo grado Scrivi un programma che consenta di risolvere equazioni di secondo grado a coefficienti reali, ax2 +bx +c = 0. Il programma deve segnalare opportunamente il caso di equazione impossibile. Si ricorda che le due soluzioni sono date dalla formula: .... L'equazione è impossibile se la quantità ..., detta delta, è negativa.
  9. Formula di Erone Dato un triangolo qualsiasi i cui lati misurano a, b e c, la formula di Erone afferma che l'area del triangolo è data da √p(p-a)(p-b)(p-c), dove p è il semiperimetro, ovvero la metà del perimetro del triangolo. Scrivi un programma che consenta di calcolare l'area di un triangolo date le misure dei lati. Prima di calcolare l'area, il programma deve verificare che le misure inserite dall'utente siano tutte positive, e che i tre lati formino effettivamente un triangolo (in un triangolo ogni lato deve essere minore della somma degli altri due). In caso contrario, il programma deve richiedere nuovamente l'inserimento dei valori di input.

Ripetizione

  1. N volte CIAO Scrivi un programma che richiede all'utente un numero intero positivo N, e visualizza N volte la stringa "Ciao!" sul video, dopodiché visualizza una sola volta la stringa "Arrivederci.". Esempio di esecuzione del programma: Quante volte vuoi ripetere la parola? 3 Ciao! Ciao! Ciao! Arrivederci.
  2. Pari e dispari Scrivi un programma che mostra i primi N numeri naturali, con N fornito dall'utente. Accanto a ogni numeri deve comparire la scritta "pari" o "dispari" come nel seguente esempio ( N = 5 ) : Quanti numeri vuoi mostrare? 5 1 dispari 2 pari 3 dispari 4 pari 5 dispari FINE.
  3. Mostrare i divisori Scrivi un programma che mostra tutti i divisori di un numero naturale N fornito dall'utente. Ad esempio, se l'utente fornisce N=10, il programma stampa: I divisori di 10 sono: 1, 2, 5, 10.
  4. Conto alla rovescia Scrivi un programma che visualizza una sequenza decrescente di numeri interi, a partire dal numero fornito dall'utente e fino al valore 0. Al termine della sequenza il programma deve mostrare il messaggio FINE! . Ad esempio, se l'utente fornisce in input il valore 5, il programma stampa: 5, 4, 3, 2, 1, 0, FINE!
  5. Tabelline Scrivi un programma che mostra i primi K multipli di un numero interno N. I valori di N e K sono forniti dall'utente. Ad esempio, per N=3 e K=5 il programma deve mostrare il seguente output: 3 x 1 = 3; 3 x 2 = 6; 3 x 3 = 9; 3 x 4 = 12; 3 x 5 = 15;
  6. Sequenza di lunghezza predeterminata Scrivi un programma che riceve in input una sequenza (di lunghezza N chiesto in input) e restituisce "even" se il numero è pari, "odd" se il numero è dispari, "zero" se il numero è 0.
  7. Sequenza di lunghezza non predeterminata Scrivi un programma che riceve in input una sequenza (di lunghezza qualsiasi ma terminata da -100) e restituisce "even" se il numero è pari, "odd" se il numero è dispari, "zero" se il numero è 0.
  8. Somma dei primi N numeri naturali Scrivi un programma che richiede all'utente un numero intero positivo N, calcola la somma dei numeri naturali compresi tra 1 ed N. Ad esempio, se l'input è N=5, l'output è 1+2+3+4+5 = 15.
  9. Fattoriale Dato un numero naturale N, si definisce "fattoriale di N" il prodotto di tutti i numeri naturali compresi tra 1 ed N stesso. Ad esempio, il fattoriale di 5 è 120, poiché 1·2·3·4·5 = 120. Scrivi un programma che calcola il fattoriale del numero fornito dall'utente.
  10. Quadrati dei dispari Scrivi un programma che visualizza i quadrati dei primi N numeri dispari, e ne calcola la somma. Il valore di N è fornito dall'utente.
  11. Somma dei pari Scrivi un programma che calcola la somma di tutti i numeri pari compresi tra A e B, estremi inclusi. A e B sono due numeri interi positivi forniti dall'utente, con A < B. Esempio: INPUT: A=2, B=11; OUTPUT: 30.
  12. Numeri armonici Scrivi un programma che richiede all'utente un numero intero positivo N e calcola la somma dei reciproci dei primi N numeri naturali, ovvero: 1 + 1/2 + 1/3 + ... + 1/N. In matematica, il numero razionale ottenuto in tal modo è detto n-esimo numero armonico. Ad esempio, il decimo numero armonico è: 1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7 + 1/8 + 1/9 + 1/10, circa pari a 2.93. Curiosità: al crescere di N, il numero ottenuto si avvicina sempre più a ln(N)+γ(dove γ ≈ 0,57721 56649 01532… è la costante di Eulero-Mascheroni), con un errore inferiore a 1/10 già per N≥5. soluzione
  13. Serie armonica alternata Scrivi un programma che richiede all'utente un numero intero positivo N e calcola la quantità: 1 – 1/2 + 1/3 – 1/4 ... ± 1/N (rispettivamente: + se N è dispari e - se N è pari). Curiosità: al crescere di N, il numero ottenuto si avvicina sempre più al logaritmo naturale di 2, con un errore inferiore a 1/10 già per N≥5.
  14. Numeri perfetti Un numero naturale si dice perfetto se è uguale alla somma dei suoi divisori propri (per divisore proprio intendiamo un divisore di N diverso da N stesso). Ad esempio, il numero 28 ha come divisori propri i numeri 1, 2, 4, 7 e 14, ed è un numero perfetto poiché 1 + 2 + 4 + 7 + 14 = 28. Scrivi un programma che richiede all'utente un numero e stabilisce se questo è perfetto oppure no. Curiosità: i numeri perfetti sono piuttosto rari. I primi numeri perfetti sono 6, 28, 496... qual è il prossimo? Come si potrebbe modificare il programma in modo da mostrare tutti i numeri perfetti compresi tra 1 e 1.000.000.000 ?
  15. Numeri primi Un numero naturale si dice primo se è divisibile solo per 1 e per sé stesso. Scrivi un programma che stabilisce se un numero fornito dall'utente è primo oppure no. Suggerimento: è possibile usare una variabile per “tenere traccia” della presenza di divisori compresi tra 2 e n/2. Cerca di ottimizzare il programma in modo che venga effettuato il minor numero di operazioni possibile.
  16. Fizz Buzz In alcuni paesi, per insegnare ai bambini i multipli di tre e di cinque, si utlizza un gioco di gruppo chiamato "Fizz Buzz". I bambini si siedono in cerchio e devono contare ad alta voce, a turno, partendo da 1, sostituendo ognu multiplo di tre con la parola "Fizz", ogni multplo di 5 con la parola "Buzz" e ogni multiplo sia di tre che di cinque con la parola "Fizz Buzz". Ad esempio, se si decide di contare fino a 15, il primo bambino dice "1", il secondo bambino dice "2", il terzo bambino dice "fizz", il quarto dice "4" e così via. Scrivi un programma che mostra la sequenza corretta fino al numero N fornito dall'utente. Ad esempio, se N=16 il programma mostra: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, Fizz Buzz, 16, soluzione
  17. Potenze Scrivi un programma che calcola la potenza a^b, dove a e b sono due interi positivi forniti dall'utente. Esempio: a = 2, b = 3 ⇒ output = 8.
  18. Media aritmetica Scrivi un programma che richiede all'utente N numeri reali, e mostra la media aritmetica dei numeri inseriti. Il valore di N è deciso preventivamente dall'utente. Importante: per raccogliere i valori inseriti dall'utente, usa una variabile adatta a contenere numeri con la virgola. Esempio di esecuzione del programma: Quanti numeri vuoi inserire? 3 Dammi un numero(1): 5 Dammi un numero(2): 6.5 Dammi un numero(3): 6 La media è 5.83333
  19. Si ha un elenco di 20 studenti di una classe. L'elenco è composto da Cognome e voto finale dell'anno. Determinare il valore medio dei voti. Soluzione: vedi sotto
  20. Per la risoluzione di equazioni di secondo grado (AX² + BX + C = 0) creare diagramma e programma in C++. Distinguere i casi di soluzioni reali distinte, di soluzioni reali coincidenti e di soluzioni impossibili nel campo reale, per ciascuna equazione da trattare. Il lavoro finisce quando viene immesso un valore di A pari a 0. Soluzione: vedi sotto
  21. Data una sequenza di numeri non nulli, terminante con 0, visualizzare i seguenti risultati: - la media aritmetica, - il valore maggiore della sequenza e quante volte esso compare, - il prodotto dei numeri negativi.
  22. Acquisire una sequenza di età fino a quanto l'utente digita "N" alla domanda "altre età da inserire?". Al termine visualizzare: - un messaggio per segnalare se vi sono bambini (età <= 12 anni) e un messaggio per segnalare se vi sono pensionati (età >=65); - la differenza tra l'età del più giovane e quella del più anziano; - la percentuale dei maggiorenni sul totale delle età inserite.
  23. Acquisire una sequenza di voti; l'inserimento termina quando si digita 0 al voto. Calcolare e visualizzare: - quanti voti sono stati inseriti; - la media dei voti inseriti; - la quantità dei voti della sequenza uguali a 7.
  24. Data una sequenza di numeri interi non nulli, terminante con il numero 0, emettere: - la media aritmetica dei numeri positivi pari; - la somma dei quadrati dei numeri negativi dispari; - quanti sono i numeri negativi pari minori di -500.
  25. Acquisire i punteggi realizzati da studenti del primo anno universitario che hanno sostenuto il test di analisi matematical. Acquisire punteggi finché l'utente risponde 'S' alla domanda 'Vuoi continuare?'. Calcolare e visualizzare : - la percentuale di studenti promossi (punteggio >30); - la percentuale di studenti che dovranno sostenere un ulteriore colloquio orale (20 <= punteggio <= 30); - la percentuale di studenti respinti (punteggio < 20). Inoltre calcolare e visualizzare la media dei punteggi degli studenti promossi e quanti hanno ottenuto il punteggio massimo pari a 35.
  26. Data una serie di numeri, terminante con 0, determinare : - quanti sono i positivi; - la media dei numeri pari; - il fattoriale del numero maggiore della serie; - la quantità dei numeri digìtati dall'utente.
  27. Data una sequenza di 100 numeri pari trovare la differenza tra il maggiore e il minore, nonché il prodotto dei numeri <=25 e >=2.
  28. Calcolare e visualizzare i primi N numeri dispari e la loro somma.
  29. Visualizzare quanti sono i multipli positivi inferiori a 100 di un numero inserito da utente.
  30. Dato un numero intero positivo immesso a tastiera, calcolare e visualizzare il suo fattoriale.
  31. Acquisire una sequenza terminante con zero; visualizzare : - la quantità di valori inseriti; - il maggiore tra i valori dispari inseriti.
  32. Dato un numero intero positivo N calcolare e visualizzare il suo fattoriale.
  33. Acquisire da tastiera un numero K>0; poi acquisire una sequenza di N valori terminante con 0. Calcolare e visualizzare : - la media dei valori della sequenza appartenenti all'inteWallo [K-10; K+10]; - il numero dei valori della sequenza che sono positivi; - il numero dei valori della sequenza multipli di K; - la media aritmetica dei valori della sequenza.
  34. Il titolare di un negozio di abbigliamento ci chiede un programmino per il calcolo dei prezzi di Saldo da applicare agli abiti. Ci fornisce, per ciascun abito, il prezzo di listino ed il tipo di abito ('U' = da uomo / 'D' = da donna). Sapendo che lo sconto per abiti da uomo è del 40% e per gli abiti da donna è del 50% fornire al titolare del negozio, per ciscun abito della lista, il prezzo di 'Saldo'. La lista termina con un 'prezzo di listino' = 0.

Ripetizione postcondizionale

  1. Controllo dell'input Scrivi un programma che richiede all'utente un numero MAGGIORE DI 100 e PARI . Se il numero inserito non è valido, il programma deve richiederlo nuovamente. Se il numero è valido, il programma termina. Risolvi l'esercizio usando un ciclo do-while. Esempio di esecuzione: Inserisci un numero pari e maggiore di 100: 20 Hai inserito un numero non valido Inserisci un numero pari e maggiore di 100: 103 Hai inserito un numero non valido Inserisci un numero pari e maggiore di 100: 102 Bravo. Fine.
  2. Controllo dell'input (2) Un distributore di merendine accetta solo monete da 5, 10, 20 e 50 centesimi. Scrivi un programma che richiede il valore di una moneta, e la accetta solo se la moneta ha un valore valido. Risolvi l'esercizio usando un ciclo do-while. Esempio di esecuzione: Inserisci una moneta: 30 Moneta non valida Inserisci una moneta: 55 Moneta non valida Inserisci una moneta: 20 MONETA ACCETTATA. Fine.
  3. Conto alla rovescia con ciclo do-while Riscrivi il programma del conto alla rovescia usando un ciclo do-while al posto del ciclo while.
  4. Distrubutore di bibite con resto Un distributore di bibite permette di acquistare le seguenti bevande: bottiglietta d'acqua (costo: 50 cent) bibite in lattina (costo: 80 cent) bibite in bottiglietta (costo: 1 euro = 100 cent) Il distributore accetta tutte le monete (1 cent, 5 cent, 10 cent, 20 cent, 50 cent, 1 euro, 2 euro). Il funzionamento del distributore è il seguente: L'utente seleziona il prodotto ( 1=acqua, 2=lattina, 3=bottoglia ) Il distributore richiede monete finch` l'importo inserito non risulta maggiore o uguale all'importo richiesto. Terminato l'inserimento delle monete, il distributore eroga il prodotto e visualizza sul display il resto da ritirare. Scrivi un programma C++ che simula il funzionamento del distributore. Note: per simulare l'inserimento delle monete da 1 e 2 euro, l'utente del programma inserisce i valori 100 e 200. Anche il resto viene mostrato in centesimi (ad esempio, il resto di 1 euro e 20 cent viene mostrato come 120).

Cicli annidati

  1. Ciclo annidato - determinazione output Determina l'output dei seguenti frammenti di programma che contengono cicli annidati:
    	// A)
    	int i=0, j, R=3, C=4;
    	while(i < R) {
    		j=0;
    		while (j < C) {
    			cout << i+j;
    			j=j+1;
    		}
    		cout << "\n";
    		i=i+1;
    	}
    
    	// B)
    	int x=0, y=0;
    	while(x < 10)
    	{
    		y=0;
    		while(y < 10)
    		{
    			if(x < y)
    				cout << "+";
    			else
    				cout << "-";
    			y=y+1;
    		}
    		cout << "\n";
    		x=x+1;
    	}
    
    	// C
    	int r=1,c=1;
    	while(r<=6) {
    		c=1;
    		while(c<=r) {
    			cout << r;
    			c=c+1;
    		}
    		cout << "\n";
    		r=r+1;
    	}
    
    soluzione

Funzioni

  1. aa

Soluzione

  1. //-----------------------------------------------------------
    // Si ha un un elenco di 20 studenti di una classe, con nome 
    // e voto finale conseguito a fine anno scolastico.
    // Calcolare il voto medio della classe.
    //-----------------------------------------------------------
    
    #include<iostream>
    // la libreria  è necessaria per poter definire una variabile di tipo 'string'
    #include<string>
    
    using namespace std;
    
    int main() {
    	// definizione delle variabili : voto (sicuramente intero) e quindi anche totvoti.
    	// La media ha sicuramente decimali quindi float.
    	//   Il cognome è una stringa di caratteri. 
    	int voto, totvoti;
    	float media;
    	string cognome;
    	// Sapendo che gli studenti sono esattamente 20 si utilizza un ciclo con contatore, che eseguirà le istruzioni del corpo esattamente 20 volte
    
    	for(int i=0; i<3; i=i+1)
    	{
    		// Lettura dei dati
    		cout << "Inserire il solo cognome (senza spazi) : ";
    		cin >> cognome;
    		cout << "Inserire il voto : ";
    		cin >> voto;
    		// Sommatoria dei voti
    		totvoti=totvoti+voto;
    	}
    	// Alla fine: calcolo ed emissione della media
    	// E` necessario scrivere 3.0  (anziché 3) per indicare
    	// che deve essere prodotto un risultato con decimali [vedi casting]
    	media=totvoti/3.0;
    	cout << "La media dei voti e` : " << media << endl;
    	return 0;
    }
    
  2. //-----------------------------------------------------------
    // risoluzione di una serie di equazione di 2° grado
    // Ad ogni ciclo devono essere forniti i valori per a, b, c
    // ed il programma termina se viene immesso un valore 0 per a
    //-----------------------------------------------------------
    
    #include<iostream>
    #include<math.h>
    
    using namespace std;
    
    int main() {
    	// definizione delle tre variabili dell'equazione di tipo float
    	// per gestire piu' possibilita' 
    	float a,b,c,delta,x,x1,x2;
    	// Prima lettura di a
    	cout << "Inserire valore per a : ";
    	cin >> a;
    	// Ciclo per la risoluzione di piu' equazioni con il test 
    	// sul valore di a all'inizio del ciclo (ciclo precondizionato)
    	while(a!=0)
    	{
    		// Lettura di b
    		cout << "Inserire valore per b : ";
    		cin >> b;
    		// Lettura di c
    		cout << "Inserire valore per c : ";
    		cin >> c;
    		// Calcolo del delta e visualizzazione del suo valore per controllo
    		delta=b*b-4*a*c;
    		cout << endl << "Il valore del delta e` : " << delta << endl;
    		// Test sul delta
    		if(delta<0) {
    			cout << "Non ci sono soluzioni Reali" << endl;
    		}
    		else {
    			if(delta==0) {
    				x=(-b)/(2*a);
    				cout << "Due soluzioni Reali Coincidenti di valore : " << x << endl;
    			}
    			else {
    				x1=(-b+sqrtf(delta))/(2*a);
    				x2=(-b-sqrtf(delta))/(2*a);
    				cout << "Due soluzioni Reali distinte : " << x1 << " e " << x2 << endl;
    			}
    		}
    		// Altra lettura di a
    		cout << "Inserire valore per a : ";
    		cin >> a;
    	}
    	return 0;
    }
    
  3. ...