Strumenti Utente

Strumenti Sito


fisica:informatica:201718:esercitazioni:esercitazione3

Questa è una vecchia versione del documento!


Esercitazione 2

Dove si sviluppano semplici programmi C che utilizzano i costrutti di controllo if e while e gli array.

Esercizio 1: Asterischi

Leggere un numero intero N da standard input e stampare su standard output N caratteri asterisco (*) seguiti da newline (\n).

Esercizio 2: Max, min e somma

(da svolgere senza usare array)

  1. Leggere tre reali da standard input e stampare su standard output il massimo il minimo e la somma dei tre.
  2. Leggere venti reali da standard input, calcolare il massimo, il minimo e la somma di tutti i valori e stampare su standard output.
  3. Leggere da standard input una serie di reali terminata dal valore 0.0. Calcolare massimo, minimo e somma totale dei reali nella serie e stampare su standard output.

Esercizio 3: Fattoriale

Scrivere un programma che legga da tastiera un numero intero x e stampi il valore di x!. Per x! si intende x fattoriale, ovvero

\begin{align}\label{eq:fibonacci} x! = x·(x−1)·(x−2)···1. \end{align}

utilizzare il tipo int. fino a quale valore di x il fattoriale viene calcolato correttamente ?

Esercizio 4: Utilizzare le funzioni matematiche: ''math.h''

La libreria matematica, math.h contiene le funzioni per calcolare le più comuni funzioni matematiche su valori di tipo double.

Scrivere un programma che legga da tastiera un numero reale x e stampa il valore della seguente funzione. utilizzando le funzioni della libreria matematica

\begin{align}\label{eq:math} f(x) = 3 · x^2 + 2·x + ln(42) \end{align}

per usare la libreria matematica, includere

#include <math.h>

e compilare aggiungendo -lm (su alcuni sistemi linux le librerie matematiche non sono disponibili senza questo accorgimanto), quindi se il mio programma si trova nel file funzione.c compilo con

gcc -Wall -pedantic funzione.c -o funzione -lm 

ed eseguo con

./funzione

Esercizio 5: Equazioni di secondo grado

Scrivere un programma C che legge da standard input i coefficienti a,b,c di una equazione di secondo grado

a * x^2 + b * x + c = 0

ne calcola le radici seguendo la traccia in questo documento

Esercizio 6: Approssimazione dell'integrale

Consideriamo la funzione

\begin{align}\label{eq:integrale} f(x) = 5x^3 + 4x^2 + 7x + 5: \end{align}

Si vuole calcolare l'integrale di $f(x)$ su un intervallo $[a, b]$ dividendo l'intervallo in n intervalli di lunghezza $\frac{(b-a)}/{n}$ e calcolando l'integrale come somma dell'area di $n$ trapezi, come spiegato in questo documento.

Il programma chiede all'utente due reali positivi a e b e un intero positivo nmax numero di intervalli in cui suddividere l'intervallo [a, b]. Il programma deve calcolare le approssimazioni dell' integrale di $f(x)$ ottenute con il procedimento dei trapezio per $n = 2, 3, 4, \ldots n_max$. Stampando su standard output i valori ottenuti e la differenza con l'integrale esatto calcolato analiticamente.

Note:

  1. La funzione $f(x)$ deve essere calcolata utilizzando una opportuna espressione aritmetica, si possono utilizzare le funzioni nella libreria math.h

Esercizio 7: Calcolo della radice quadrata

Dato un numero reale positivo a si consideri la sequenza dei numeri reali x definita da

x[0] = 1
x[i+1] = 1/2*(x[i] + a/x[i])

si puo' dimostrare che x[i] tende alla radice quadrata di a per i che tende all'infinito.

Scrivere un programma che legga il valore di a da standard input e calcoli la radice quadrata di a utilizzando la sequenza. In particolare, si calcoli la sequenza fino a che x[i] non diventa uguale a x[i+1], il valore ottenuto e' l'approssimazione cercata per la radice quadrata di a.

Ad ogni ciclo, far stampare su standard output il numero dell'iterazione i, il valore di x[i] ed il valore di a-x[i]*x[i] per controllare la convergenza.

Esercizio 8: Verifica ordinamento

Leggere da standard input una serie di reali terminata dal valore 0.0. Stampare sullo standard output la parola Ordinata se la sequenza e' ordinata in modo crescente e Non ordinata se la sequenza non e' ordinata.

Estendere il programma in modo da riconoscere se la sequenza e' ordinata in modo crescente o descrescente e stamparle Ordinata crescente o Ordinata decrescente sullo standard output.

Esercizio 10: La successione di Fibonacci

La successione di Fibonacci, in sintesi risolve il seguente problema: Immaginiamo di chiudere una coppia di conigli in un recinto. Sappiamo che ogni coppia di conigli:

  1. inizia a generare dal secondo mese di età;
  2. genera una nuova coppia ogni mese;
  3. non muore mai.

Quanti conigli ci saranno nel recinto dopo un anno?

La successione di Fibonacci fornisce il numero di conigli al tempo n in funzione del numero di conigli nei due mesi precedenti n-1 ed n-2,

Fib(0) = 1
Fib(1) = 1
Fib (n) = Fib(n-1) + Fib(n-2)   se n > 1

Visivamente image008.jpg.

Scrivere un programma C che legge in ingresso un numero intero positivo X e calcola i numeri di Fibonacci da 1 ad X stampandoli sullo standard output.

Elaborazione (solo per chi ha la macchina virtuale o lavora con linux): Provate ad utilizzare la funzione sleep(1) per attendere un secondo fra la generazione di un numero e del successivo. Per ottenere informazioni sulla funzione utilizzate

man 3 sleep

visto che la sezione 3 dei manuali in linea contiene informazioni su tutte le funzioni di libreria standard C.

fisica/informatica/201718/esercitazioni/esercitazione3.1516112047.txt.gz · Ultima modifica: 16/01/2018 alle 14:14 (6 anni fa) da Susanna Pelagatti