Programmazione ed
Esercitazioni di Programmazione


<-- Torna alla lista delle soluzioni

Esercitazione 2

Esercizio 1

/* Scrivere un programma che calcoli (e stampi a video) il voto finale dell'esame di Programmazione dopo aver chiesto all'utente di inserire il voto della prova teorica, quello della prova pratica e il bonus per le esercitazioni. Osservazioni:
- il programma deve controllare che i voti della prova pratica e di quella teorica siano compresi tra 18 e 30
- il programma deve controllare che il bonus per le esercitazioni sia un numero compreso tra 0 e 2
- il voto finale deve essere ottenuto facendo la media (arrotondata per difetto) della pratica con la teoria e aggiungendo poi il bonus per le esercitazioni */

#include <stdio.h> 

int main() {
 	int voto_t, voto_p, bonus, media;

	do {
		printf("Inserire voto prova teorica: ");
		scanf(" %d", &voto_t);
 	} while(voto_t < 18 || voto_t > 30);
	
	do {
		printf("Inserire voto prova pratica: ");
		scanf(" %d", &voto_p);
	} while(voto_p < 18 || voto_p > 30);
    
	do {
		printf("Inserire punteggio bonus: ");
		scanf(" %d", &bonus);
	} while(bonus < 0 || bonus > 2);
	
	media = ((voto_t + voto_p)/2) + bonus;
	
	if (media > 30)
		printf("Il voto finale e' 30 e lode\n");
	else
		printf("Il voto finale e' %d\n", media); 
	
	return 0;
}


Esercizio 2

/* Scrivere un programma che, letti da tastiera tre numeri interi specificanti una data (anno, numero del mese nell'anno e numero del giorno nel mese), stabilisca se la data è valida o meno e visualizzi un messaggio di conseguenza. Si tenga conto del fatto che l'anno inserito possa essere bisestile. */

#include <stdio.h>

int main() {
	int giorno;
	int mese;
	int anno;

	printf("Inserire gg mm aa: ");
	scanf(" %d", &giorno);
	scanf(" %d", &mese);
	scanf(" %d", &anno);
	
	switch(mese) {
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12: 
			if(giorno >=1 && giorno <= 31)
				printf("Data %d/%d/%d valida!\n", giorno, mese, anno);
			else
				printf("Data %d/%d/%d non valida!\n", giorno, mese, anno);
			break;
		case 4: 
		case 6:
		case 9:
		case 11: 
			if(giorno >=1 && giorno <= 30)
				printf("Data %d/%d/%d valida!\n", giorno, mese, anno);
			else
				printf("Data %d/%d/%d non valida!\n", giorno, mese, anno);
			break;
		case 2:
			if((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0)
				if(giorno >=1 && giorno <= 29)
					printf("Data %d/%d/%d valida!\n", giorno, mese, anno);
				else
					printf("Data %d/%d/%d non valida!\n", giorno, mese, anno);
			else
				if(giorno >=1 && giorno <= 28)
					printf("Data %d/%d/%d valida!\n", giorno, mese, anno);
				else
					printf("Data %d/%d/%d non valida!\n", giorno, mese, anno);
			break;
		default: 
			printf("Data %d/%d/%d non valida!\n", giorno, mese, anno);
			break;
	}

	return 0;
}


Esercizio 3

/* Scrivere un programma che visualizzi il seguente listino:
MENU
1) Pizzetta 3.10
2) Toast 1.90
3) Caramelle 0.95
4) Acqua 0.60
5) Caffè 0.75
6) Tramezzino 1.00
quindi legga una sequenza di interi corrispondenti ai prodotti scelti dall'utente (si assuma che la sequenza termini con -1 e visualizzi una scritta corrispondente alla spesa totale. */

#include <stdio.h>

int main() {
	int num;
	double totale = 0.0;

	printf("******** MENU ********\n");
	printf("\n1) Pizzetta     3.10");
	printf("\n2) Toast        1.90");
	printf("\n3) Caramelle    0.95");
	printf("\n4) Acqua        0.60");
	printf("\n5) Caffè        0.75");
	printf("\n6) Tramezzino   1.00\n");
	
	do {
		printf("Seleziona prodotti e inserisci -1 per il totale: ");
		scanf(" %d", &num);

		switch(num) {
			case -1: break;
			case 1: totale = totale + 3.10; break;
			case 2: totale = totale + 1.90; break;
			case 3: totale = totale + 0.95; break;
			case 4: totale = totale + 0.60; break;
			case 5: totale = totale + 0.75; break;
			case 6: totale = totale + 1.00; break;
			default: printf("Codice non valido\n"); break;
		}
	} while(num != -1);

	printf("\nSpesa totale = %lf\n\n",totale);

	return 0;
}


<-- Torna alla lista delle soluzioni