Esercizi di programmazione in C



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

Caratteri e stringhe Esercizi risolti

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

SOLUZIONE ESERCIZIO 1

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

Variabili e tipi di dato

Esercitazione 3. Corso di Fondamenti di Informatica

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

Introduzione alla programmazione in C

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

Alcune regole di base per scrivere un programma in linguaggio C

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

La selezione binaria

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

LINGUAGGI DI PROGRAMMAZIONE

Linguaggi di programmazione + laboratorio a.a. 2012/2013

ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi terza

Funzioni in C. Violetta Lonati

Le variabili. Olga Scotti

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

Corso di Laurea in Matematica

Primi programmi in C

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

1) Dati in ingresso 2 numeri, l algoritmo calcola e stampa a video la loro somma

Matlab: Strutture di Controllo. Informatica B

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Gestione delle stringhe in C

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

Esercitazione 7. Procedure e Funzioni

Gestione dei File in C

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

DAL DIAGRAMMA AL CODICE

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

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

Breve riepilogo della puntata precedente:

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

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

AREA RETTANGOLO LIRE IN EURO

Richiesta pagina PHP (es: index.php)

Esercizi di programmazione in C

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

Esercizi di programmazione in C

Esame del 3 febbraio 2010

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

La somma di 12 e 30 è 42

Introduzione al Linguaggio C

MAGAZZINO.CPP January 2, 2008 Page 1

Esempi di algoritmi. Lezione III

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

Fondamenti di Informatica 2

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

Prova Scritta del 19/07/10

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Le stringhe. Le stringhe

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

Introduzione al linguaggio C Gli array

RICERCA DI UN ELEMENTO

INFORMATICA - I puntatori Roberta Gerboni

Matematica in laboratorio

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

Lab 04 Istruzioni, cicli e array"

Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo

Algoritmi di Ricerca. Esempi di programmi Java

Rappresentazione delle informazioni

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

Aritmetica dei Calcolatori 2

2 Operatori matematici e costrutto if

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

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

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

Strutture di Controllo Condizionali e Operatori Logici e Relazionali

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

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

10 - Programmare con gli Array

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

4 3 4 = 4 x x x 10 0 aaa

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

Esercizio. Pseudocodice

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

Concetti chiave. Struct. Variabili strutturate: il tipo struct Elementi di una struttura typedef e struct Array di strutture

FORMULE: Operatori matematici

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Corso di Esercitazioni di Programmazione

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Problem solving avanzato

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

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

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Alessandro Pellegrini

Esercizi di programmazione

Connessione ad internet

Transcript:

Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal primo numero introdotto, stampa ogni volta la media di tutti i numeri introdotti. Terminare quando il numero inserito è negativo. Soluzione: int a, i, t; float r; t = 0; i = 0; printf ("Inserisci un numero: "); while (a >= 0) i++; t += a; r = t/i; printf ("La media attuale è: %.3f\n", r); printf ("Inserisci un numero: "); printf ("La media finale è: %.3f\n", r);

Esercizio 2 Si scriva un programma in linguaggio C che acquisisca da tastiera una parola (cioè una stringa di caratteri priva di separatori) e la stampi a video se e solo se tale parola è palindroma, ossia leggibile nello stesso modo da destra a sinistra e viceversa (es. OSSESSO). Per determinare la lunghezza della parola si può utilizzare la funzione strlen(s) contenuta nel file header <string.h>. Soluzione: #include <string.h> char s[100]; int i, flag; i = 0; scanf ("%s", s); flag = 1; while ((i < (strlen(s)/2)) && (flag == 1)) if (s[i]!= s[strlen(s)-i-1]) flag = 0; i++; if (flag == 1) printf ("La parola è palindroma.\n"); printf ("La parola non è palindroma.\n");

Esercizio 3 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di numeri positivi e ad ogni numero letto ne stampi la somma progressiva. Il programma termina quando si introduce un numero minore o uguale a zero. Soluzione: int a, t; t); t = 0; printf ("Inserisci un numero: "); while (a >= 0) t += a; printf ("La somma progressiva attuale è: %d\n", printf ("Inserisci un numero: "); printf ("La somma progressiva finale è: %d\n", t);

Esercizio 4 Si scriva un programma in linguaggio C che legga da tastiera un numero intero A, lo riduca ad un valore compreso tra 0 e 127 mediante sottrazione ripetuta di un adeguato numero di volte del valore 128 (non si utilizzi l operatore modulo o and), lo interpreti come caratteri ASCII e lo stampi sul video. Soluzione: int a; printf ("Inserisci un numero: "); while (a >= 128) a -= 128; printf ("%c\n", a);

Esercizio 5 Si scriva un programma C che legga da tastiera 5 numeri e stampi a video il maggiore tra essi, la loro media e la radice quadrata della somma. Si noti che per effettuare la radice quadrata esiste la funzione double sqrt (double)definita nel file di header: <math.h> Soluzione: #include <math.h> int i, a, max, somma; float r; max = 0; for (i=0; i<5; i++) printf ("Inserisci un numero: "); if (max < a) max = a; somma += a; r = somma / 5; printf ("Il valore massimo inserito è: %d\n", max); printf ("La radice quadrata della somma è: %.3f\n", sqrt(somma)); printf ("La media è: %.3f\n", r);

Esercizio 6 Chiedere 2 num. interi (a,b) e disegnare un rettangolo di dimensioni a*b usando il carattere " * ". Soluzione: int a, b, i, j; printf ("Inserisci il lato a: "); printf ("Inserisci il lato b: "); scanf("%d",&b); for (i=0; i<a; i++) printf ("*"); printf ("\n"); for (i=0; i<b-2; i++) printf ("*"); for (j=0; j<a-2; j++) printf (" "); printf ("*\n"); for (i=0; i<a; i++) printf ("*"); printf ("\n");

Esercizio 7 Generare un numero a caso e chiedere all'utente un numero fino a quando non e' uguale a quello generato casualmente. Dire ogni volta se il numero immesso e' > o < di quello iniziale. Soluzione: #include <stdlib.h> int a, t, r; r = rand(); a = -1; while (a!= r) printf ("Inserisci un numero: "); if (a!= r) if (a<r) printf ("Inserisci un numero maggiore.\n"); printf ("Inserisci un numero minore.\n");

1 Strutture di controllo 1.1 Multiplo Legge due numeri e controlla se il primo è multiplo del secondo. unsigned int m, n; scanf ("%u", &m); scanf ("%u", &n); if (m % n == 0) printf ("%u è multiplo di %u\n", m, n); printf ("%u non è multiplo di %u\n", m, n); 1.2 Massimo Comun Divisore Legge due numeri e calcola l MCD. unsigned int n, m, mcd, min, contatore; scanf ("%u", &n); scanf ("%u", &m); if (n <= m) min = n; min = m; contatore = 1; while (contatore <= min) if (n % contatore == 0 && m % contatore == 0) 3

mcd = contatore; contatore = contatore + 1; printf ("%u", mcd); 1.3 Valutazione triangolo Legge tre interi e stabilisce se possono essere le lunghezze dei lati di un triangolo. In caso affermativo, trova la tipologia del triangolo. unsigned int x, y, z; scanf ("%u", &x); scanf ("%u", &y); scanf ("%u", &z); if ((x < y + z) && (y < x + z) && (z < x + y)) if (x == y && y == z) printf ("Triangolo equilatero"); if (x == y y == z x == z) printf ("Triangolo isoscele"); printf ("Triangolo scaleno"); printf ("Non è un triangolo"); 4

1.4 Calcolatrice L utente inserisce un carattere ( +, -, *, / ) che rappresenta l operazione da eseguire e due operandi (numeri float). L operazione viene eseguita, se possibile. float op1, op2, tot; char operazione; unsigned int errore = 0; printf ("Operazione (+,-,*,/): "); scanf ("%c", &operazione); printf ("Primo operando: "); scanf ("%f", &op1); printf ("Secondo operando: "); scanf ("%f", &op2); switch (operazione) case '+': tot = op1 + op2; break; case '-': tot = op1 - op2; break; case '*': tot = op1 * op2; break; case '/': if (op2!= 0) tot = op1 / op2; errore = 1; break; default: printf ("Operazione?\n"); errore = 1; if (errore == 0) printf ("Risultato: %f\n", tot); printf ("Errore!\n"); 5

1.5 Anno bisestile L utente inserisce un anno ed il calcolatore verifica se è bisestile. Se l utente inserisce un numero minore di zero il programma termina (senza ovviamente fare alcuna verifica); altrimenti, al termine della verifica, si ricomincia daccapo. Un anno è bisestile se è divisibile per 4 ma non per 100, oppure se è divisibile per 400. Pseudocodice [leggi l anno] while ([l anno è un numero positivo]) [calcola il resto della divisione intera dell anno per 4, per 100 e per 400] if ([il primo resto è zero (cioè, l anno è divisibile per 4) AND il secondo resto non è zero (cioè, l anno NON è divisibile per 100), OR il terzo resto è zero (cioe, l anno è divisibile per 400)]) [scrivi che l anno è bisestile] [scrivi che l anno non è bisestile] [leggi l anno] void main () unsigned int restodiv4, restodiv100, restodiv400; int anno; printf ("Inserire un anno: "); scanf ("%d", &anno); while (anno >= 0) restodiv4 = anno % 4; restodiv100 = anno % 100; restodiv400 = anno % 400; if (restodiv4==0 && restodiv100!==0 restodiv400==0) printf("l anno è bisestile\n"); printf ("L anno non è bisestile\n"); printf ("Inserire un altro anno: "); scanf ("%d", &anno); 6

1.6 Da minuscolo a maiuscolo L utente inserisce una sequenza di caratteri, terminata dal carattere #. Il programma visualizza i caratteri, trasformando tutte le lettere minuscole in maiuscole. Eventuali caratteri diversi dalle lettere minuscole e dal # devono essere visualizzati come _ ; il carattere # deve essere anch esso visualizzato. Pseudocodice do [leggi carattere] if ([carattere è compreso tra a e z ]) [calcola e scrivi il carattere maiuscolo corrispondente, togliendo 32 al codice ASCII] if ([carattere non è # ]) [scrivi _ ] [scrivi # ] while ([carattere è diverso dal # ]) char carattere; printf ("Inserisci caratteri minuscoli; termina con #: "); do scanf (" %c", &carattere); if (carattere >= 97 && carattere <= 122) printf ("%c", carattere - 32); if (carattere!= '#') printf ("_"); printf ("#"); while (carattere!= '#'); 7

1.7 Conversione temperature L utente inserisce una temperatura in Celsius e il calcolatore la converte in Fahrenheit ed in Kelvin. Se la temperaura inserita è minore dello zero assoluto, il calcolatore segnala un errore. Se l utente inserisce una temperatura uguale allo zero assoluto il programma termina dopo la conversione, altrimenti si ricomincia daccapo. Ricordiamo che: Fahrenheit = (9/5) Celsius + 32 Kelvin = Celsius + 273,15 Pseudocodice do [leggi la temperatura Celsius] if ([temperatura Celsius è maggiore o uguale a 273.15]) [converti la temperatura Celsius in Fahrenheit e Kelvin] [scrivi le temperature Fahrenheit e Kelvin] [scrivi che c è un errore: non esistono temperature Celsius minori di 273.15] while ([temperatura Celsius è maggiore di 273.15]) const float zeroassolutocelsius = -273.15; float celsius, fahrenheit, kelvin; do printf ("Inserire temperat. in C (-273.15 = fine): "); scanf ("%f", &celsius); if (celsius >= zeroassolutocelsius) fahrenheit = (9.0 / 5.0) * celsius + 32; kelvin = celsius - zeroassolutocelsius; printf ("Fahrenheit: %f, Kelvin: %f\n", fahrenheit, kelvin); printf ("Errore!\n"); while (celsius!= zeroassolutocelsius); 8

1.8 Fattoriale L utente inserisce alcuni numeri naturali e l elaboratore calcola il fattoriale per ognuno di essi. Ricordiamo che i fattoriale è definito come: n! = 1 sse n = 0 n! = n (n 1)! sse n > 0 ma può essere calcolato: n! = 1 sse n = 0 n! = 1 2 3 n sse n > 0 Pseudocodice [leggi quanti numeri si vogliono inserire] for ([esegui un numero di volte pari al valore letto al passo precedente]) [leggi numero naturale] [assegna 1 alla variabile che conterrà il fattoriale] for ([il contatore va da 1 al numero naturale letto, con passo 1]) [la variabile che conterrà il fattoriale viene moltiplicata per il valore corrente del contatore] [scrivi la variabile che, adesso, contiene il fattoriale] unsigned int n, i, max, j; unsigned long int fat; printf ("Quanti numeri?: "); scanf ("%u", &max); for (j = 1; j <= max; j++) printf ("Introduci numero naturale: "); scanf ("%u", &n); fat = 1; for (i = 1; i <= n; i++) fat = fat * i; printf ("Il fattoriale è: %lu\n", fat); 9