• Non ci sono risultati.

IEIM 2017-2018

N/A
N/A
Protected

Academic year: 2021

Condividi "IEIM 2017-2018"

Copied!
29
0
0

Testo completo

(1)

IEIM 2017-2018

Esercitazione XII

“Ripasso”

Alessandro A. Nacci

alessandro.nacci@polimi.it - www.alessandronacci.it

(2)

Ricorsione - Esercizio III

Analizzare il comportamento della seguente funzione ricorsiva mostrando l’andamento

delle variabili, considerando i seguenti input:

funzione(231,0)

Dire quale funzione espleta

2

#include <stdio.h>

#define DIMENSIONE 10

int mia_funzione(int num, int part) { if (num == 0)

return part;

else {

return mia_funzione(num/10, part*10 + num%10);

} }

int main() {

int a = reverse2(21,0);

printf("%d\n",a);

}

(3)
(4)

Ordinamento di vettori

“Il lancio dei dadi”

4

(5)

Lancio dei dadi

Data la sequenza di lanci di un dato che ha prodotto il seguente risultato:

{3,4,6,1,3,5,4,2,6,2,3}

Calcolare media e mediana degli elementi di un array contenente i lanci di un dado.

Calcolare inoltre le frequenze di ogni valore.

(6)

La media

Dato che sappiamo usare le sommatorie...

6

Cosa sarebbe cambiato se fosse stato...

(7)

La mediana

Per calcolare la mediana di dati:

si ordinano gli n di dati in ordine crescente o decrescente;

se il numero di dati è dispari la mediana corrisponde al valore centrale, ovvero al valore che occupa la posizione (n + 1) / 2

se il numero n di dati è pari, la mediana è

stimata utilizzando i due valori che occupano le posizione (n / 2) e ((n /2) + 1)

(generalmente si sceglie la loro media

Come facciamo ad ordinare i dati?

(8)

Ordinamento dei dati: bubble sort

Per avere un ordinamento crescente:

scambio man mano a due a due due elementi xi e xi+1 se xi > xi+1

Dopo n-1 iteraizoni ho la garanzia di aver ordinato l’intero array

8

(9)

La mediana (codice C)

(10)

Calcolo delle frequenze

10

(11)

Il main()

(12)

FINE ESERCIZIO

Domande?

12

(13)

Utilizzo di Struct Complesse

“Gestione Automobili”

(14)

Automobili

Rappresentare in C una automobile. Nel nostro caso, una automobile è descritta da un nome, un costo, un colore, da un insieme di componenti e da un libretto di circolazione.

Un componente ha un nome, un costo ed una categoria. Le categorie possibili sono TRAZIONE, MULTIMEDIA, SICUREZZA

Il libretto di circolazione riporta invece l’anno e la provincia di immatricolazione e in che classe Euro rientra.

Il programma deve poter permettere la creazione di auto e la stampa a schermo di tutti i dati relativi ad un’auto

Deve poter permettere inoltre di modificare il nome dell’auto

Deve poter calcolare il costo totale per la produzione dell’auto

14

(15)

Automobili: Le strutture dati - Codice C

(16)

crea_libretto_cicolazione

Scriviamo una funzione per la creazione di un generico libretto di circolazione

16

(17)

crea_componente

Scriviamo una funziona per la creazione di un generico componente di un’auto

(18)

crea_auto

Scriviamo una funziona per la creazione di una generica automobile

18

(19)

Stampa a schermo dei dati di un’auto

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA

(20)

Stampa di un componente

20

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA CLASSE EURO

stringa float enum

(21)

Calcolo costo componente

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA

(22)

Stampa libretto circolazione

22

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA CLASSE EURO

intero

stringa intero

(23)

Stampa a schermo dei dati di un’auto

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA

(24)

Una prima parte di main() ...

24

(25)

Occupiamoci della modifica

(26)

Finiamo il main() ...

26

(27)

Automobili: Le strutture dati - Codice C

RICAPITOLIAMO

AUTOMOBILE NOME COSTO COLORE

COMPONENTI NOME COSTO CATEGORIA LIBRETTO

ANNO IMM.

PROVINCIA

(28)

28

(29)

Tutte il materiale sarà disponibile sul mio sito internet!

alessandronacci.it

Riferimenti

Documenti correlati

• Se l’elemento A[i] considerato è uguale al carattere occorrenza ed è uguale all’elemento A[i-1], incremento un contatore occorrenze (occorrenze++). • Se l’elemento A[i] non

Macchina a Stati Finiti (Coffee Machine).. typedef enum {

• La sequenza di chiamate ricorsive termina quando quella più interna (annidata) incontra uno dei casi di base.. • Ogni chiamata alloca sullo stack (in

• Se invece viene chiamata passandole dei dati che NON costituiscono uno dei casi di base, allora chiama se stessa (passo ricorsivo) passando dei DATI

Marco e' padre di LUCA e di PIPPO Stefania e' madre di LUCA e di PIPPO Arianna e' figlia di Marco e Lucia. Stefano e' figlio di Arianna

Per creare un percorso corretto, dato un punto generico in cui il pirata si trova, il pirata può spostarsi solo in una cella adiacente che abbia un valore superiore a. quello

• Il programma deve poter permettere la creazione di auto e la stampa a schermo di tutti i dati relativi ad un’auto.. • Deve poter permettere inoltre di modificare il

• Il programma deve poter permettere la creazione di auto e la stampa a schermo di tutti i dati relativi ad un’auto.. • Deve poter permettere inoltre di modificare il