Indice

Esercitazione 4

Nella propria home directory creare una sottodirectory chiamata es04, in cui metteremo tutti i file C di oggi.

Importante:

Eseguire gli esercizi nell'ordine proposto ma se intorno alle 16,00 non ci si e' ancora arrivati naturalmente passare direttamente all'esercizio 10.

Esercizio 1

Scrivere un programma che definisce un array di 10 interi e stampa a video la somma e il prodotto degli elementi e poi il massimo ed il minimo dell'array (con le loro posizioni).

Esercizio 2

Scrivere un programma che crei un array di 7 interi con valori casuali, stampi la somma degli elementi pari e il prodotto degli elementi dispari.

Nota: elementi pari o dispari, non “di posizione” pari o dispari.

Esercizio 3

Scrivere un programma che letto un array di 7 interi dall'utente, azzeri i valori nelle posizioni pari, raddoppi i valori nelle posizioni dispari e poi stampi l'array a video.

Nota: elementi “di posizione” pari o dispari, non elementi pari o dispari.

Esercizio 4

Scrivere un programma che crei un array di 7 interi forniti dall'utente e determini (se c'e') la posizione del primo elemento che e' minore della somma degli elementi che lo precedono. Se non c'e', il programma deve dare un messaggio di errore.

Esercizio 5

Modificare il programma precedente per determinare (se c'e') la posizione del primo elemento che e' minore della somma degli elementi che lo seguono. Se non c'e', il programma deve dare un messaggio di errore.

Esercizio 6

Scrivere un programma che crei un array di 7 interi forniti dall'utente, controlli se l'array e' ordinato in ordine strettamente descrescente e stampi a video sia l'array che il risultato

E'ordinato

oppure

Non e' ordinato: X

dove X e' la posizione del primo elemento fuori ordine).

Esercizio 7

Scrivere un programma che crei due array di caratteri (forniti dall'utente) A di 5 elementi e B di 3 elementi, e verifichi se esiste almeno un carattere dell'array A maggiore (secondo l'ordinamento alfabetico) di tutti i caratteri presenti nell'array B.

Esercizio 8

Scrivere un programma che chieda all'utente due array di 3 elementi e quindi calcoli la matrice 3 per 3 risultato del prodotto riga per colonna dei due array. Il programma dovra' quindi stampare a video la matrice (ben spaziata!) e la sua diagonale.

Esercizio 9

Scrivere un programma C che legge dallo standard input un numero N di reali da generare e stampa sullo standard output una sequenza di N numeri casuali reali nell'intervallo [0,1).

Suggerimento: Utilizzare RAND_MAX e la divisione fra reali.

Esercizio 10: La macchina di Galton

La macchina di Galton (Galton Board) e' un dispositivo ideato nella seconda meta dell'Ottocento per illustrare in modo semplice il teorema del limite centrale. Qui vogliamo realizzare una versione virtuale della macchina, che utilizzi un generatore di numeri pseudocasuali. Le regole sono semplici: dato un opportuno sistema di riferimento (illustrato in Figura sotto) ed un intero n > 0 una pallina parte dall'alto nella posizione n/2+1 e si muove di n passi verso il basso, spostandosi contestualmente verso destra o verso sinistra (in modo casuale) di +0.5 o -0.5 con uguali probabilita' (pd = ps = 0.5).

n = 8
...1.2.3.4.5.6.7.8.9
=====================
0|........o........|
1|.........o.......|
2|..........o......|
3|.........o.......|
4|........o........|
5|.......o.........|
6|......o..........|
7|.....o...........|
8| | | |o| | | | | |
=====================
...1.2.3.4.5.6.7.8.9

Figura 1 La macchina di Galton per n = 8

E' facile convincersi che la posizione di arrivo nel punto piu' basso puo' assumere tutti i valori tra 1 e n+1 (non con la stessa probabilita'!).

Realizzare un programma C che letto il numero dipassi da standard input igeneri e visualizzi sullo schermo possibili percorsi della pallina. Si puo' utilizzare una grafica a piacere o quella della Figura 1.

Notare che in questo esercizio non e' necessario usare strutture dati complesse come gli array. Si consiglia di pensare a entrambe le soluzioni (senza e con l'uso di array).