Torna a Claudio Sartori
Informativa Privacy
|
Esempi svolti a lezione
- Massimo di una sequenza
- memoria: una variabile per l'elemento corrente da input e una per il massimo corrente
- programma sorgente
- Fattoriale
- Calcolo delle frequenze delle modalità di un carattere
- acquisisce valori da input
- utilizza un array di strutture
- utilizza funzioni
- programma sorgente
- Calcolo delle frequenze relative e cumulate
- versione con utilizzo minimo di memoria
- esegue due accessi al file
- la prima volta determina la somma delle frequenze
- la seconda volta calcola frequenze relative e cumulate
- programma sorgente
- Generazione di numeri pseudo-casuali
- simulazione del lancio di un dado ideale e di un dado truccato
- il caso del dado ideale è ottenuto come segue:
- si genera un numero random fra 0 e RAND_MAX
- si trasforma il numero generato in un numero fra 0 e 1, con una divisione per RAND_MAX
- si trasforma in un numero fra 1 e 6 con l'ovvia trasformazione lineare
- il caso del dado truccato è ottenuto come segue
- si predispone un array con le probabilità cumulate dei 6 risultati in ordine
- si genera un numero fra 0 e 1
- si determina la posizione della prima probabilità cumulata superiore al numero generato: quello è il valore del lancio
- programma sorgente
- Generazione di un istogramma a barre orizzontali, a partire da un array di coppie <etichetta,valore>
- riceve un array di coppie <label intera, valore> e produce un istogramma a barre orizzontali,
tracciando segni in modalità carattere;
- viene tracciato in un'area di ampiezza DIM_ORIZZ caratteri: per il valore minimo viene tracciato un segno, per il massimo un numero di segni tale da occupare tutto lo spazio
- calcola i valori minimo e massimo, la loro differenza e' l'intervallo su cui distribuire i segni
- calcola il valore di ogni segno, dividendo il numero di segni disponibili per la differenza sopra calcolata
- ripeti per ogni coppia
- visualizza l'etichetta
- ripeti un numero di volte proporzionale al valore
- va a capo
input
|
output
|
1 10
2 20
3 30
4 40
5 50
6 60
7 45
8 35
9 15
10 5
|
Etichetta 5.00 ---------- 60.00
1 ***
2 *********
3 **************
4 *******************
5 *************************
6 ******************************
7 **********************
8 *****************
9 ******
10 *
|
- programma sorgente
- Calcolo dei quantili
- procedura che riceve in input un array di n coppie <label intera, valore> e l'indicazione del numero di quantili in cui classificarle; restituisce un array che per ogni coppia contiene l'individuazione del quantile relativo; l'array deve essere ordinato secondo l'ordinamento richiesto per i quantili
input
|
output
|
1 10
2 20
3 30
4 40
5 50
6 60
7 45
8 35
9 15
10 5
|
etichetta frequenza freq.rel. quantile
1 10.00 0.03 1
2 20.00 0.10 1
3 30.00 0.19 2
4 40.00 0.32 4
5 50.00 0.48 5
6 60.00 0.68 7
7 45.00 0.82 9
8 35.00 0.94 10
9 15.00 0.98 10
10 5.00 1.00 10
|
- Campionamento di record da un file
- programma di generazione di un file da cui campionare
- normalmente i dati sono forniti dall'esterno, in questo caso, a titolo di prova, si genera un file a caso costituito da N numeri interi presi dall'intervallo [Min,Max]
- sorgenti: genera.c, random.c, random.h (aggiungere random.c al progetto)
- programma di campionamento, versione 1
- carica il campione su un array
- versione "con reimbussolamento", ovvero può capitare che un record sia preso piu' volte
- il caricamento del campione su array è giustificato soltanto se:
- il campione che si vuole estrarre non e' troppo grande
- l'elaborazione che si intende svolgere sul campione richiede più accessi a ogni dato del campione
- sorgenti: campiona.c, random.c, random.h
- programma di campionamento, versione 2
- senza reimbussolamento, si tiene traccia dei record già estratti
|