SOLUZIONE ESERCIZIO 1



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

Esercizi di programmazione in C

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Esercizi svolti durante le ore di Informatica e Sistemi automatici nelle classi del Liceo Scientifico Tecnologico del Liceo Milli di Teramo

RICERCA DI UN ELEMENTO

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Laboratorio di Fondamenti di Informatica anno accademico Esercizi proposti il

Esempio: Array di struct

Le variabili. Olga Scotti

Corso di Informatica Medica Esercitazione 1I ! Alessandro A. Nacci - alessandronacci.com

Esercitazione 3. Corso di Fondamenti di Informatica

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Istruzioni Condizionali in C

Record in C: il costruttore struct.

Caratteri e stringhe Esercizi risolti

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

2 Operatori matematici e costrutto if

Politecnico di Torino

Richiesta pagina PHP (es: index.php)

Esercizio. Pseudocodice

Esercitazione 7. Procedure e Funzioni

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

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

Caricare un numero n float, calcolare e stampare il quadrato e il cubo di n. Diagramma di flusso

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Programmi per il calcolo deterministico del prezzo di opzioni call e put

Linguaggio C - Funzioni

Funzioni. Il modello console. Interfaccia in modalità console

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Matlab: Strutture di Controllo. Informatica B

Fondamenti di Informatica 2

Primo programma in C Esercizi risolti

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Compilare il primo programma. Primo programma in C. Esercizio Somma due numeri. Compilare il primo programma. Analisi. Analisi

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

Breve riepilogo della puntata precedente:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Introduzione alla programmazione in C

Visualizzazione grafica. dell'output di un programma con GNUplot

Istruzione if/else. Espressioni booleane

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Gestione dei File in C

Corso di Esercitazioni di Programmazione

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp KP Cap. 6 pp

Esercitazione n 4. Obiettivi

Introduzione al Linguaggio C

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Esercizi di programmazione

Gestione delle stringhe in C

La selezione binaria

Arduino: Programmazione

EXCEL FUNZIONI PRINCIPALI

Quotazione compareto( ) Quotazione piurecente( ) Quotazione Quotazione Quotazione non trovato count( )

Modulo 5 La programazione Unità 4 Selezione

Immettere un importo in euro intero e stampare il numero minimo di banconote da 20, 10, 5 e monete da 1 e 2 euro necessarie per pagarlo.

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Variabili e tipi di dato

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

I puntatori e l allocazione dinamica di memoria

Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 {

3. La sintassi di Java

Esercizi di programmazione in C

Università degli Studi di Verona. Esercizi. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

Algebra Booleana ed Espressioni Booleane

Dipartimento di Elettronica, Informazione e Bioingegneria Politecnico di Milano

Codifica: dal diagramma a blocchi al linguaggio C++

Transcript:

SOLUZIONE ESERCIZIO 1 Progettare un algoritmo che dati tre numeri (voti) a, b, c che possono assumere i valori interi da 18 a 30, calcoli la loro media. #include <stdio.h> void main() { int a, b, c; float media; //inserimento dei dati printf("inserisci il primo voto [18-30]: "); scanf("%d", &a); printf("inserisci il secondo voto [18-30]: "); scanf("%d", &b); printf("inserisci il terzo voto [18-30]: "); scanf("%d", &c); //verifica degli input if ((a>=18)&&(a<=30)&&(b>=18)&&(b<=30)&&(c>=18)&&(c<= 30)) { media = (float)(a + b + c)/3; printf("\n\nla media dei tre voti e' %2.1f\n", media); else { printf ("\n\nerrore di inserimento dei dati.\n");

SOLUZIONE ESERCIZIO 2 Progettare e codificare in C (scrivendolo in voto1.c) ) un programma che permetta il calcolo della media di tre voti dati in trentesimi. La media deve essere fornita in centesimi o trentesimi a seconda del valore assunto da una variabile scala di tipo carattere. #include <stdio.h> void main() { float a, b, c, media; char scelta; printf("inserisci il primo voto [18-30]: "); scanf("%f", &a); printf("inserisci il secondo voto [18-30]: "); scanf("%f", &b); printf("inserisci il terzo voto [18-30]: "); scanf("%f", &c); printf("\nvuoi la media in trentesimi o centesimi [t/c] : "); scanf("\n%c", &scelta); if ((a>=18)&&(a<=30)&&(b>=18)&&(b<=30)&&(c>=18)&&(c<=30)) { if (scelta == 't') { media = (a + b + c)/3.0; printf("\n\nla media in trentesimi e' %2.1f\n", media); else if (scelta == 'c') { media = ((a + b + c)/3.0)*(100/30.0); printf("\n\nla media in centesimi e' %2.1f\n", media); else printf("\nerrore: manca la scelta della media.\n"); else printf ("\n\nerrore inserimento voti.\n");

#include <stdio.h> #include <math.h> SOLUZIONE ESERCIZIO 3 main (){ int reali=0; float a, b, c; float delta, d, x1, x2; Direttiva al preprocessore: include la libreria matematica (fornisce la funzione sqrt) printf("inserisci i valori dei coefficienti a,b,c\n"); scanf("%f %f %f",&a,&b,&c); delta = b*b-4*a*c; reali=(delta>=0); if (reali){ d = sqrt(delta); x1 = -(b+d)/(2*a); x2 = -(b-d)/(2*a); printf("le radici dell' equazione sono %f, %f\n", x1,x2); else printf("l' equazione non ha radici reali\n");

SOLUZIONE ESERCIZIO 4 Progettare e codificare in C il programma che data una quantità di soldi in lire restituisca la quantità corrispondente in euro (/2000) o in dollari (/2500), a seconda del valore assunto da una variabile moneta di tipo char. #include <stdio.h> void main() { float lire, risultato; char valuta; printf("inserisci un valore in lire: "); scanf("\n%f",&lire); printf("scrivi 'e' per convertire in euro o 'd' in dollari: "); scanf("\n%c",&valuta); if (valuta == 'e' valuta == 'E') { risultato = (float)(lire/2000.0); printf("\nvalore in euro: %.2f\n", risultato); else if (valuta == 'd' valuta == 'D') { risultato = (float)(lire/2500.0); printf("\nvalore in dollari: %.2f\n", risultato); else { printf("\nerrore,parametro sconosciuto:\n\tvaluta = '%c'", valuta); printf("\nripetere l'operazione.\n");

SOLUZIONE ESERCIZIO 5 Progettare e codificare in C un programma che prende da tastiera, due variabili (tipo int da trattare come booleani [0,1]). Stampa a video il valore logico delle due variabili (se x è uguale a 1 allora x è TRUE altrimenti è FALSE), e ne fa le seguenti operazioni: AND OR XOR a XOR b = ( a OR b ) AND ( NOT( a AND b ) ) => ( a => b ) = NOT( a ) OR ( a AND b ) Stampare a video i risultati, sia come intero ([0,1]) che come booleano ([TRUE, FALSE]). #include <stdio.h> void main() { int a,b; printf("inserisci il valore della prima variabile [0,1]: "); scanf("\n%d",&a); printf("\ninserisci il valore della seconda variabile [0,1]: "); scanf("\n%d", &b); /*************************************************************** Si ricorda che in linguaggio C lo 0 viene considerato false, mentre un qualsiasi valore diverso da 0 viene considerato TRUE. ***************************************************************/

SOLUZIONE ESERCIZIO 5 // Calcolo l'and logico: if (a && b) printf("\n A AND B: %d AND %d = TRUE\n",a,b); else printf("\n A AND B: %d AND %d = FALSE\n",a,b); // Calcolo l'or logico: if (a b) printf("\n A OR B: %d OR %d = TRUE\n",a,b); else printf("\n A OR B: %d OR %d = FALSE\n",a,b); // Calcolo lo xor logico: if (a^b) printf("\n A XOR B: %d XOR %d = TRUE\n",a,b); else printf("\n A XOR B: %d XOR %d = FALSE\n",a,b); // Calcolo lo xor in un modo diverso: if ((a b)&&(!(a&&b))) printf("\n(2) A XOR B: %d XOR %d = TRUE\n",a,b); else printf("\n(2) A XOR B: %d XOR %d = FALSE\n",a,b); // Calcolo l'implicazione logica: if (!a (a&&b)) printf("\n A => B: %d => %d = TRUE\n",a,b); else printf("\n A => B: %d => %d = FALSE\n",a,b);

SOLUZIONE ESERCIZIO 6 Progettare e codificare in C un programma che prende in ingresso il valore di un anno (es.: 1492, 2003 ). Stabilisce se l anno è bisestile o no. Un anno è bisestile se è divisibile per 4 e, qualora sia l anno d inizio di un secolo, solo se è divisibile per 400. #include <stdio.h> void main() { int anno; printf("inserisci un anno: "); scanf("\n%d",&anno); if (anno>0) { if ( ((anno%100 == 0) && (anno%400 == 0)) ((anno%100!= 0) && (anno%4 == 0)) ) { printf("\nl'anno %d e' bisestile.\n", anno); else { printf("\nl'anno %d non e' bisestile.\n", anno); else { printf("errore: L'anno deve essere > di 0.\n");

SOLUZIONE ESERCIZIO 7 Progettare e codificare in C un programma che prende in ingresso tre numeri (reali); quindi stampa un piccolo menu del tipo: 1. Calcolo della media 2. Calcolo del max 3. Calcolo del min 4. Uscita A seconda della scelta dell utente, il programma esegue l operazione richiesta, sampandone a video il risultato.

SOLUZIONE ESERCIZIO 7 #include <stdio.h> void main() { double num1,num2,num3, risultato; int scelta; printf("\ninserisci il primo numero: "); scanf("\n%lf",&num1); printf("\ninserisci il secondo numero: "); scanf("\n%lf",&num2); printf("\ninserisci il terzo numero: "); scanf("\n%lf",&num3); // Stampiamo il menu: printf("\n\nscegli una delle seguenti opzioni:\n"); printf("1. Calcolo della media.\n"); printf("2. Calcolo del massimo.\n"); printf("3. Calcolo del minimo.\n"); printf("4. Uscita.\n"); printf("\nscelta: "); scanf("\n%d",&scelta);

SOLUZIONE ESERCIZIO 7 // Eseguiamo il comando: if(scelta == 1) { risultato = (num1+num2+num3)/3.0; printf("\nla media e' : %lf\n", risultato); else if(scelta == 2) { if(num1 > num2) risultato = num1; else risultato = num2; if(num3 > risultato) risultato = num3; printf("\nil massimo e' : %lf\n", risultato); else if(scelta == 3) { if(num1 < num2) risultato = num1; else risultato = num2; if(num3 < risultato) risultato = num3; printf("\nil minimo e' : %lf\n", risultato); else if(scelta == 4) printf("\nquitting."); else printf("errore: Scelta = %d\ncomando sconosciuto.\n",scelta);

SOLUZIONE ESERCIZIO 8 Si scriva un programma C che prende in ingresso una data (giorno, mese, anno forniti come numeri interi), calcola la data successiva e la visualizza. Ricordiamo che: il mese di Febbraio ha 29 giorni negli anni bisestili un anno è bisestile se è divisibile per 4 e, qualora sia l anno d inizio di un secolo, solo se è divisibile per 400

SOLUZIONE ESERCIZIO 8 #include <stdio.h> #include <stdlib.h> // La includiamo per l'istruzione exit. void main() { int giorno1, mese1, anno1, giorno2, mese2, anno2; int bisestile = 0; //i booleani che sono interi con valore 0,1. printf("inserire la data [GG/MM/AAAA]: "); scanf("\n%d/%d/%d", &giorno1, &mese1, &anno1); // Se l'utente inserisce una data impossibile allora usciamo. if(anno1 < 0) { printf("\nerrore: data non valida.\n"); exit(1); if(mese1 < 0 mese1 > 12) { printf("\nerrore: data non valida.\n"); exit(1); if(giorno1 < 0) { printf("\nerrore: data non valida.\n"); exit(1);

SOLUZIONE ESERCIZIO 8 // Se l'anno1 è bisestile: if( ((anno1%100 == 0) && (anno1%400 == 0)) ((anno1%100!= 0) && (anno1%4 == 0)) ) { // E siamo in febbraio bisestile = 1; if(mese1 == 2 && giorno1 > 29) { printf("\nerrore: data non valida.\n"); exit(1); // Se l'anno non è bisestile: else { if(mese1 == 2 && giorno1 > 28) { printf("\nerrore: data non valida.\n"); exit(1); if( (mese1==11 mese1==4 mese1==6 mese1==9) && (giorno1 > 30)) { printf("\nerrore: data non valida.\n"); exit(1); else if(giorno1 > 31) { printf("\nerrore: data non valida.\n"); exit(1);

SOLUZIONE ESERCIZIO 8 // Se arrivo fino qua allora la prima data era giusta, // altrimenti sarebbe già uscito con exit(int). // Non mi resta che calcolare la data successiva : giorno2 = giorno1 + 1; mese2 = mese1; anno2 = anno1; // Gestisco l'anno bisestile nel mese di febbraio: if(mese2 == 2 && bisestile && giorno2 > 29) { giorno2 = 1; mese2 = mese2 +1; else if(mese2 == 2 &&!bisestile && giorno2 > 28) { giorno2 = 1; mese2 = mese2 +1; // Per i mesi che hanno 30 gg se giorni vale + di 30 allora // incremento il mese e azzero giorno. else if((mese2 == 9 mese2 == 4 mese2 == 6 mese2 == 11) && (giorno2 > 30)) { mese2 = mese2 +1; giorno2 = 1;

SOLUZIONE ESERCIZIO 8 // Se arrivo alla fine dell'anno allora incremento // l'anno e azzero il mese e il giorno. else if(mese2 == 12 && giorno2 > 31) { anno2 = anno2 +1; mese2 = 1; giorno2 = 1; else if (giorno2 > 31) { mese2 = mese2 +1; giorno2 = 1; printf("\nla data successiva a quella inserita e': %d/%d/%d\n", giorno2,mese2,anno2); exit(0);