• Non ci sono risultati.

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 7 (24/11/09)

N/A
N/A
Protected

Academic year: 2021

Condividi "06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 7 (24/11/09)"

Copied!
3
0
0

Testo completo

(1)

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 7 (24/11/09)

La presente esercitazione presuppone conoscenza delle seguenti parti del linguaggio C: main, return, com- menti, variabili, identificatori, tipi scalari, assegnazione, costanti letterali, printf (base), scanf (deprecata), operazioni aritmetiche, if . . . else, operatori relazionali, operatori Booleani, getchar, putchar, ciclo while, li- breria ctype.h, const, #define, exit, programmazione a stati, gets, sscanf, stringhe, traduzione di algoritmi matematici; switch, break, #ifdef, math.h, cast, printf (completa), ciclo for; argc, argv; definizione di funzioni;

file sequenziali, fopen, fclose, fgetc, fprintf

Esercizio 1

Scrivere un programma in linguaggio C che legga valori di temperatura (uno per riga finch´e ce ne sono) in gradi Fahrenheit e ne restituisca il valore in gradi Celsius. Per la risoluzione dell’esercizio `e obbligatorio scrivere ed utilizzare una funzione celsius cos`ı definita:

float celsius (float temperatura_F);

/* riceve come parametro la temperatura in gradi Fahreneit */

/* restituisce la stessa temperatura espressa in gradi Celsius */

Si ricorda che le temperature in gradi Fahreneit (t

F

) e Celsius (t

C

) sono legate dalla seguente relazione:

t

C

= (t

F

− 32) · 5/9

Esercizio 2

Scrivere un programma in linguaggio C che legga valori di temperatura (uno per riga finch´e ce ne sono) in gradi Celsius e ne restituisca il valore in gradi Fahrenheit. Per la risoluzione dell’esercizio `e obbligatorio scrivere ed utilizzare una funzione fahrenheit cos`ı definita:

float fahrenheit (float temperatura_C);

/* riceve come parametro la temperatura in gradi Celsius */

/* restituisce la stessa temperatura espressa in gradi Fahreneit */

Esercizio 3

Scrivere un programma in linguaggio C che riceva da riga di comando un numero intero positivo inferiore a 1000 e determini se tale numero `e primo oppure no. Per la risoluzione dell’esercizio `e obbligatorio scrivere ed utilizzare una funzione is prime cos`ı definita:

int is_prime (unsigned long n);

/* riceve come parametro il numero da valutare */

/* restituisce 0 se non e’ un numero primo, 1 altrimenti */

Si ricorda che un numero `e primo se `e maggiore di 1 e divisibile esattamente solo per l’unit`a e per se stesso. Ne consegue che per sapere se un numero maggiore di 1 non `e primo `e sufficiente controllare se `e divisibile esattamente per due o per uno dei numeri dispari non superiori alla radice quadrata del suo valore.

1

(2)

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 7 (24/11/09)

Esercizio 4

Definire in linguaggio C una funzione denominata esame superato che riceva come parametri due voti (sotto forma di numeri interi vteoria e vprog) e fornisca come valore di ritorno:

• -1 se `e stato fornito un parametro errato (ossia un voto negativo o superiore a 30)

• 0 se l’esame non `e stato superato

• il valore del voto conseguito se l’esame `e stato superato In altre parole la funzione deve avere il seguente prototipo:

int esame_superato (int vteoria, int vprog)

Vale la seguente regola per il superamento dell’esame:

L’esame `e superato se la media aritmetica dei due voti (arrotondata per eccesso) `e pari almeno a 18 e nessuno dei due voti `e inferiore a 15.

Scrivere quindi un programma in linguaggio C che (usando la funzione esame superato) indichi il superamento dell’esame in base ai due voti ricevuti sulla riga di comando.

Il seguente esempio riporta tre casi di uso del programma (supposto essere denominato voto):

attivazione output

voto 24 26 Complimenti, hai superato l’esame col voto 25/30!

voto 12 30 Mi spiace, esame non superato.

voto -1 30 errore - dati non validi.

Esercizio 5

Scrivere un programma in linguaggio C che calcoli quante righe sono presenti nel file denominato DATI.TXT. Si osservi che la massima lunghezza di una riga del file non `e nota a priori.

Esercizio 6

Scrivere un programma in linguaggio C che calcoli quanti caratteri e quante righe sono presenti nel file il cui nome `e indicato come primo parametro sulla riga di comando.

Ad esempio se il programma (denominato carrig) venisse attivato col comando:

carrig lettera.txt

ed il file lettera.txt contenesse il seguente testo:

Cara mamma,

torno per Natale.

Baci.

allora il programma dovrebbe fornire in output:

lettera.txt: caratteri=33 righe=3

2

(3)

06AZN - Fondamenti di Informatica (GES, LOP, ORG) Esercitazione di laboratorio n. 7 (24/11/09)

Esercizio 7

Un file contiene i prezzi degli articoli presenti a magazzino, indicati tramite il codice dell’articolo (numero intero positivo) ed il suo prezzo in Euro (numero reale con due cifre frazionarie). Ogni riga del file contiene un articolo.

Scrivere un programma in linguaggio C che applichi ai prezzi (contenuti nel file il cui nome `e passato come primo parametro sulla riga di comando) uno sconto pari alla percentuale indicata come secondo parametro sulla riga di comando, scrivendo il risultato in un file il cui nome `e passato come terzo parametro sulla riga di comando.

Ad esempio se il programma (denominato varprez) venisse attivato col comando:

varprez pnormali.txt 20 pscontati.txt

ed il file pnormali.txt contenesse i seguenti dati:

1 1.00 10100 20.00 1234 5.50

allora il programma dovrebbe generare il file pscontati.txt coi seguenti dati:

1 0.80 10100 16.00 1234 4.40

3

Riferimenti

Documenti correlati

Scrivere un programma in linguaggio C che chieda all’utente le coordinate di un punto nel piano Cartesiano XY e quindi determini se tale punto appartiene all’area del rettangolo

Scrivere un programma in linguaggio C che legga tutti i caratteri in input, fermandosi non appena incontra un carattere punto, punto esclamativo o punto interrogativo, e quindi

La presente esercitazione presuppone conoscenza delle seguenti parti del linguaggio C: main, return, commen- ti, variabili, identificatori, tipi scalari, assegnazione,

Scrivere un programma in linguaggio C che richieda e legga un numero intero N (minore di 100) e quindi presenti in output una tabella avente in prima colonna un numero intero (da 1

Scrivere un programma in linguaggio C che riceva un numero non noto a priori di parametri da riga di comando e, per ognuno di essi, dica se si tratta di un numero intero.. Ad

Scrivere un programma in linguaggio C che riceva come primo parametro da riga di comando un numero di riga N del file PARC.txt (contenente due parole per riga) e dica se la

Successivamente il programma riceve su standard input dei numeri interi, uno per riga, e per ciascun numero introdotto deve indicare se esso `e presente o meno fra i valori

quando il primo termine di paragone (questa casa) possiede la qualità (grande) in misura maggiore rispetto al secondo termine (la casa di Rosi).. Questa casa è più grande della casa