Esercitazioni di Informatica (CIV)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esercitazioni di Informatica (CIV)"

Transcript

1 Esercitazioni di Informatica (CIV) Puntatori, Tema d esame Andrea Romanoni andrea.romanoni@polimi.it website: 26 novembre 2015

2 Esame del 21 luglio 2014 Testo Si implementi un sistema per la gestione della classifica del ranking mondiale dei giocatori di scacchi. Un giocatore è modellato da un array di caratteri contenente il suo nome e cognome (massimo 50 caratteri) i suoi anni di inizio e fine attività, rappresentati da interi. L anno di fine attività è impostato a -1 nel caso il giocatore sia ancora attivo il suo rating ELO (un intero senza segno) Una classifica è un vettore di puntatori a giocatore di 30 elementi. Una torneo è rappresentato come una lista sequenziale, contenente al più 60 puntatori ai giocatori partecipanti e una lista sequenziale di altrettanti interi rappresentanti la posizione ottenuta dal giocatore al torneo. Un archivio è costituito da una lista sequenziale di al più 1000 giocatori, che si assume contenerne almeno 100. Andrea Romanoni Esercitazioni di Informatica (CIV) 2 / 23

3 Esame del 21 luglio 2014 Definizione dei tipi di dato Punti 1 Definire i tipi di dato definire i tipi di dato giocatore, archivio, classifica, torneo. Andrea Romanoni Esercitazioni di Informatica (CIV) 3 / 23

4 Esame del 21 luglio 2014 Definiamo i tipi #define MAX_CHAR 50 #define NUM_GIOCATORI 30 #define MAX_GIOCATORI_TORNEO 60 #define MAX_GIOCATORI 1000 typedef struct { char nome[max_char]; char cognome[max_char]; int anni_attivita; unsigned int rating; } giocatore; typedef giocatore* classifica[num_giocatori]; typedef struct { int pos[max_giocatori_torneo]; int n; }lista_posizioni; typedef struct { lista_giocatori lg; lista_posizioni lp; }torneo; typedef struct { giocatori g[max_giocatori]; int n; }archivio; typedef struct { giocatore* g[max_giocatori_torneo]; int n; }lista_giocatori; Andrea Romanoni Esercitazioni di Informatica (CIV) 4 / 23

5 Esame del 21 luglio 2014 Definizione di prototipi di funzione 2 Punti Si esplicitino le dichiarazioni dei soli prototipi delle seguenti funzioni: aggiorna_archivio: riceve l archivio dei giocatori e un torneo, aggiorna il rating ELO dei giocatori presenti al torneo in base alla posizione ottenuta. ottieni_migliori: riceve l archivio dei giocatori e una classifica, aggiorna la classifica in modo che punti ai migliori 30 giocatori dell archivio. stelle_nascenti: riceve una classifica e stampa a video i 5 migliori giocatori in attività da meno di 2 anni. Andrea Romanoni Esercitazioni di Informatica (CIV) 5 / 23

6 Esame del 21 luglio 2014 Definizione di prototipi di funzione Punti 2 void aggiorna_archivio(archivio a, torneo t) void ottieni_migliori(archivio a, classifica c) void stelle_nascenti(classifica c) Andrea Romanoni Esercitazioni di Informatica (CIV) 6 / 23

7 Esame del 21 luglio 2014 Implementazione di aggiorna_archivio Aggiorna il rating ELO dei giocatori presenti al torneo in base alla posizione ottenuta. Per ogni giocatore presente al torneo, ovvero quelli puntati dai puntatori del torneo, il numero partecipanti nuovo ELO rating è calcolato come ELO precedente + 10 (posizione ). 2 Nel caso un aggiornamento del rating ELO lo porti ad essere negativo, esso è posto a 0. (3 Punti) typedef struct { int pos[max_giocatori_torneo]; int n; }lista_posizioni; typedef struct { giocatore* g[max_giocatori_torneo]; int n; }lista_giocatori; typedef struct { lista_giocatori lg; lista_posizioni lp; }torneo; Andrea Romanoni Esercitazioni di Informatica (CIV) 7 / 23

8 Esame del 21 luglio 2014 Implementazione di ottieni_migliori Si implementi la funzione ottieni_migliori. Riceve l archivio dei giocatori e una classifica, aggiorna la classifica in modo che punti ai migliori 30 giocatori dell archivio.(8 Punti) Due strade: 1 ordino i giocatori nell archivio, faccio puntare i puntatori della classifica ai primi 30 elementi. 2 cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 8 / 23

9 Implementazione di ottieni_migliori Soluzione 1 Ordino i giocatori nell archivio, faccio puntare i puntatori della classifica ai primi 30 elementi Andrea Romanoni Esercitazioni di Informatica (CIV) 9 / 23

10 Implementazione di ottieni_migliori Soluzione 1 Ordino i giocatori nell archivio, faccio puntare i puntatori della classifica ai primi 30 elementi Andrea Romanoni Esercitazioni di Informatica (CIV) 9 / 23

11 Implementazione di ottieni_migliori Soluzione 1 Ordino i giocatori nell archivio, faccio puntare i puntatori della classifica ai primi 30 elementi Andrea Romanoni Esercitazioni di Informatica (CIV) 9 / 23

12 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

13 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

14 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

15 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

16 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

17 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

18 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

19 Implementazione di ottieni_migliori Soluzione 2 Cerco uno per volta i giocatori con ranking più elevato, scartando i giocatori già puntati. Andrea Romanoni Esercitazioni di Informatica (CIV) 10 / 23

20 Esame del 21 luglio 2014 Implementazione di stelle_nascenti Riceve una classifica e stampa a video i 5 migliori giocatori in attività da meno di 2 anni. Nel caso i giocatori con meno di due anni di attività siano meno di 5, stampa solamente quelli presenti. (5 Punti) Come stampo un giocatore G: Andrea Romanoni Esercitazioni di Informatica (CIV) 11 / 23

21 Esame del 21 luglio 2014 Implementazione di stelle_nascenti Riceve una classifica e stampa a video i 5 migliori giocatori in attività da meno di 2 anni. Nel caso i giocatori con meno di due anni di attività siano meno di 5, stampa solamente quelli presenti. (5 Punti) Come stampo un giocatore G: Andrea Romanoni Esercitazioni di Informatica (CIV) 11 / 23

22 Esame del 21 luglio 2014 Implementazione di stelle_nascenti Riceve una classifica e stampa a video i 5 migliori giocatori in attività da meno di 2 anni. Nel caso i giocatori con meno di due anni di attività siano meno di 5, stampa solamente quelli presenti. (5 Punti) Come stampo un giocatore G: Andrea Romanoni Esercitazioni di Informatica (CIV) 11 / 23

23 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 12 / 23

24 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 13 / 23

25 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 13 / 23

26 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 13 / 23

27 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 14 / 23

28 Il Girotondo Definite un programma per rappresentare un gruppo di persone (Max 30), di cui alcune tengono per mano altre. Usate una struttura opportuna per rappresentare questa situazione con il vincolo che la relazione di tenersi per mano sia rappresentata da puntatori. Andrea Romanoni Esercitazioni di Informatica (CIV) 14 / 23

29 Il Girotondo Punto 1 Andrea Romanoni Esercitazioni di Informatica (CIV) 15 / 23

30 Il Girotondo Punto 1 #define LUNG_NOME 50 typedef struct p { char nome[lung_nome]; struct p *personadestra; struct p *personasinistra; } persona; Andrea Romanoni Esercitazioni di Informatica (CIV) 15 / 23

31 Il Girotondo Punto 1 #define LUNG_NOME 50 #define MAX_PERSONE 30 typedef struct p { char nome[lung_nome]; struct p *personadestra; struct p *personasinistra; } persona; typedef struct elenco{ persona elenco[max_persone]; int numpersone; } elencopersone; Andrea Romanoni Esercitazioni di Informatica (CIV) 15 / 23

32 Il Girotondo Scrivete i prototipi delle seguenti funzioni e implementatele: Calcola il numero di strette di mano. Trova se è presente un girotondo di un sottoinsieme o tutte le persone Salva il gruppo di persone su un file. Per ogni persona, il file deve contenere una riga del seguente formato: nomepersona posizionemanodx posizionemanosx Esempio: Alice 2 1 Bob 0 2 Ciccio 1 0 Andrea Romanoni Esercitazioni di Informatica (CIV) 16 / 23

33 Il Girotondo Trova se è presente un girotondo di un sottoinsieme Nota sulla funzione che trova il girotondo Andrea Romanoni Esercitazioni di Informatica (CIV) 17 / 23

34 Il Girotondo Trova se è presente un girotondo di un sottoinsieme Nota sulla funzione che trova il girotondo Andrea Romanoni Esercitazioni di Informatica (CIV) 17 / 23

35 Il Girotondo Trova se è presente un girotondo di un sottoinsieme Nota sulla funzione che trova il girotondo Andrea Romanoni Esercitazioni di Informatica (CIV) 17 / 23

36 Il Girotondo Salva persone Nota sulla funzione che salva su un file le persone Andrea Romanoni Esercitazioni di Informatica (CIV) 18 / 23

37 Il Girotondo Salva persone Nota sulla funzione che salva su un file le persone Andrea Romanoni Esercitazioni di Informatica (CIV) 18 / 23

38 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

39 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

40 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; fp = fopen("persone.txt", "r"); if(fp == NULL) { printf("errore nella lettura del file\n"); return -1; } e->numpersone = 0; } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

41 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; fp = fopen("persone.txt", "r"); if(fp == NULL) { printf("errore nella lettura del file\n"); return -1; } e->numpersone = 0; /*prima creo la lista di persone...*/ } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

42 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; fp = fopen("persone.txt", "r"); if(fp == NULL) { printf("errore nella lettura del file\n"); return -1; } e->numpersone = 0; /*prima creo la lista di persone...*/ valoreritorno = fscanf(fp, "%s %d %d\n", e->elenco[e->numpersone].nome, &destra, &sinistra); while (valoreritorno!= EOF && e->numpersone <= MAX_PERSONE){ } } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

43 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; fp = fopen("persone.txt", "r"); if(fp == NULL) { printf("errore nella lettura del file\n"); return -1; } e->numpersone = 0; /*prima creo la lista di persone...*/ valoreritorno = fscanf(fp, "%s %d %d\n", e->elenco[e->numpersone].nome, &destra, &sinistra); while (valoreritorno!= EOF && e->numpersone <= MAX_PERSONE){ e->elenco[e->numpersone].personadestra = e->elenco + destra; e->elenco[e->numpersone].personasinistra = e->elenco + sinistra; e->numpersone++; valoreritorno = fscanf(fp, "%s %d %d\n", e->elenco[e->numpersone].nome, &destra, &sinistra); } } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

44 Il Girotondo Caricate un gruppo da un file (scritto con il formato precedente) Se una persona non è ancora stata creata come posso fare puntare un puntatore a quella persona. int leggipersone(elencopersone *e){ FILE *fp; int valoreritorno, i, destra, sinistra; fp = fopen("persone.txt", "r"); if(fp == NULL) { printf("errore nella lettura del file\n"); return -1; } e->numpersone = 0; /*prima creo la lista di persone...*/ valoreritorno = fscanf(fp, "%s %d %d\n", e->elenco[e->numpersone].nome, &destra, &sinistra); while (valoreritorno!= EOF && e->numpersone <= MAX_PERSONE){ e->elenco[e->numpersone].personadestra = e->elenco + destra; e->elenco[e->numpersone].personasinistra = e->elenco + sinistra; e->numpersone++; valoreritorno = fscanf(fp, "%s %d %d\n", e->elenco[e->numpersone].nome, &destra, &sinistra); } fclose(fp); return 1; } Andrea Romanoni Esercitazioni di Informatica (CIV) 19 / 23

45 Il Girotondo Scrivere una funzione scambiapersone che che scambia i ruoli di due persone A e B, ovvero A stringe la mano a chi stringeva la mano B e viceversa Andrea Romanoni Esercitazioni di Informatica (CIV) 20 / 23

46 Il Girotondo Scrivere una funzione scambiapersone che che scambia i ruoli di due persone A e B, ovvero A stringe la mano a chi stringeva la mano B e viceversa int scambiapersone( elencopersone *elenco, int a, int b){ char nometemp[lung_nome]; } Andrea Romanoni Esercitazioni di Informatica (CIV) 20 / 23

47 Il Girotondo Scrivere una funzione scambiapersone che che scambia i ruoli di due persone A e B, ovvero A stringe la mano a chi stringeva la mano B e viceversa int scambiapersone( elencopersone *elenco, int a, int b){ char nometemp[lung_nome]; if (a >= elenco->numpersone b >= elenco->numpersone ) { printf("una delle persone specificate non esiste\n"); return -1; } } Andrea Romanoni Esercitazioni di Informatica (CIV) 20 / 23

48 Il Girotondo Scrivere una funzione scambiapersone che che scambia i ruoli di due persone A e B, ovvero A stringe la mano a chi stringeva la mano B e viceversa int scambiapersone( elencopersone *elenco, int a, int b){ char nometemp[lung_nome]; if (a >= elenco->numpersone b >= elenco->numpersone ) { printf("una delle persone specificate non esiste\n"); return -1; } strcpy(nometemp, elenco->elenco[a].nome); strcpy(elenco->elenco[a].nome, elenco->elenco[b].nome); strcpy(elenco->elenco[b].nome, nometemp); return 0; } Andrea Romanoni Esercitazioni di Informatica (CIV) 20 / 23

49 Il Girotondo Esercizio per casa: Scrivete una funzione spostapersone che, effettivamente, date 2 posizioni nel gruppo, scambia le persone mantenendo l ordine nell elenco. Andrea Romanoni Esercitazioni di Informatica (CIV) 21 / 23

50 Analisi di codice C Si descriva cosa restituisce il main, passando come parametro al programma una parola a piacere. 1 #include <string.h> 2 #include <stdio.h> 3 struct twisted { 4 int a; 5 char b[10][10]; 6 float c; 7 }; 8 9 int main (int argc, char* argv[]){ 0 1 int a,i,count=0; 2 for( i = 0;i < strlen(argv[1]); i++) { 3 count = i[argv[1]] - a ; 4 } 5 return count; 6 } Andrea Romanoni Esercitazioni di Informatica (CIV) 22 / 23

51 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

52 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); File filelog.txt : i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

53 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); File filelog.txt : i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; fprintf(f,"%d\n", i);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

54 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); File filelog.txt : i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; fprintf(f,"%d\n", i);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

55 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); File filelog.txt : i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

56 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

57 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

58 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

59 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ fprintf(f,"%d\n", *p);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

60 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ fprintf(f,"%d\n", *p);/*pessima idea*/ Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

61 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; File filelog.txt : fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ fprintf(f,"%d\n", *p);/*pessima idea*/ fprintf(f,"%d %c\n", p->j, p->a);/*ok*/ fclose(f); return 0; } Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

62 Nota: non salvare i puntatori Quando avete un puntatore e volete salvare i dati a cui punta, non salvate direttamente il puntatore: #include <stdio.h> typedef struct{ int j; char a; } strutturaprova; int main(int argc, char const *argv[]){ int *i, val; strutturaprova *p, s; FILE *f; f = fopen("filelog.txt","w"); i = &val; *i = 30; p = &s; p->j = 20; p->a = v ; fprintf(f,"%d\n", i);/*pessima idea*/ fprintf(f,"%d\n", *i);/*ok*/ fprintf(f,"%d\n", p);/*pessima idea*/ fprintf(f,"%d\n", *p);/*pessima idea*/ fprintf(f,"%d %c\n", p->j, p->a);/*ok*/ File filelog.txt : v fclose(f); return 0; } Andrea Romanoni Esercitazioni di Informatica (CIV) 23 / 23

Esercitazioni di Informatica (CIV)

Esercitazioni di Informatica (CIV) Esercitazioni di Informatica (CIV) e Temi d esame Andrea Romanoni e-mail: andrea.romanoni@polimi.it website: http://home.deib.polimi.it/romanoni/ 10 dicembre 2015 Compilare il codice La sequenza di azioni

Dettagli

Fondamenti di Informatica L-A

Fondamenti di Informatica L-A Fondamenti di Informatica L-A Esercitazione del 23/11/07 Ing. Giorgio Villani Ripasso Teoria Funzioni ricorsive 2 fatt(2) 1 2*fatt(1) fatt(1) 1 2*1 1*fatt(0) fatt(0) 1*1 caso base fatt(0)=1 Esercizio 1

Dettagli

Esercitazioni di Informatica (CIV)

Esercitazioni di Informatica (CIV) Esercitazioni di Informatica (CIV) Temi d esame Andrea Romanoni e-mail: andrea.romanoni@polimi.it website: http://home.deib.polimi.it/romanoni/ 9 dicembre 2015 Tema d esame 24 giugno 2014 Analisi di codice

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 14 Febbraio 2006 Esercizio 1 (4 punti) Formulare la seguente istruzione del linguaggio C utilizzando il costrutto while: for(i=0,j=n-1; i

Dettagli

Politecnico di Torino

Politecnico di Torino Politecnico di Torino INFORMATICA II Esame del 29 Novembre 2008 Un file di testo di lunghezza ignota contiene le misure delle potenze di segnale radio di vari Access Point [AP] (l apparecchiatura che viene

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Obiettivo di questa esercitazione Allocazione dinamica della memoria ed esempi di problemi tipici d esame 2 Esercizio 1 Una ditta utilizza un sistema informatico

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 25 Marzo 2005 Esercizio 1 (2 punti) Convertire in formato binario, ed esadecimale il numero 372. Mostrare il procedimento usato per ottenere il risultato.

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 12 Dicembre 2008 Compito A Prima di cominciare: si scarichi il file StartKit1A.zip contenente i file di esempio. Avvertenze per la consegna: nominare i file sorgenti come richiesto nel testo del compito, apporre all inizio di ogni

Dettagli

Il compito del 11 novembre 2004

Il compito del 11 novembre 2004 Alcuni errori frequenti riscontrati durante la correzione del compito: 1. In alcuni elaborati il typedef/struct non è stato utilizzato correttamente 2. Molti hanno confuso la dichiarazione di un array,

Dettagli

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri.

Le strutture /3. Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri. Le strutture /3 Riprendiamo ora la struttura definita alcune lezioni fa e completiamo il set di funzioni che servono per gestire un elenco di libri. typedef struct {char titolo[200]; char autore[100];

Dettagli

Fondamenti di Informatica L-A

Fondamenti di Informatica L-A Fondamenti di Informatica L-A Esercitazione del 30/11/07 Ing. Giorgio Villani Ripasso Teoria File dati ES: nome.dat Leggere fopen( nome_file, rb ); fread(void *vet, int size, int n, FILE *fp); Scrivere

Dettagli

Operazioni su file di caratteri

Operazioni su file di caratteri Operazioni su file di caratteri Apertura fopen Chiusura fclose Scrittura fprintf Lettura fscanf Controllo fine file feof Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1 Apertura di un file: Si

Dettagli

- matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc)

- matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc) Esercitazione Argomenti che verranno trattati in questa esercitazione: - matrici - stringhe - file (lettura/scrittura, di testo/binari) - strutture, puntatori - allocazione dinamica della memoria (malloc)

Dettagli

Esercizio 1 File: ordinamento di un archivio di studenti (file binario)

Esercizio 1 File: ordinamento di un archivio di studenti (file binario) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 9 Esercitazione: 19 gennaio 2005 Esercizi sui file e sulle liste. Scaletta Esercizio 1 File: ordinamento di un archivio

Dettagli

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste

ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ELEMENTI DI INFORMATICA LB ESERCITAZIONE (del 09/03/2007) Files, Strutture e Liste ESERCIZIO n.1 È dato un file di testo che contiene l'elenco dei vestiti presenti in un negozio. Il file contiene al massimo

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Esercizio 1. Esercizio 1 - Soluzione

Esercizio 1. Esercizio 1 - Soluzione Esercizio 1 Realizzare un programma che, aperto un file di testo di nome Prova.txt in modalità scrittura, provveda a leggere da input delle parole separate da spazi (stringhe di al più 63 caratteri) e

Dettagli

Informatica 1. Prova di recupero 21 Settembre 2001

Informatica 1. Prova di recupero 21 Settembre 2001 Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo

Dettagli

Lezione 11: Liste a Puntatori e Input/Output

Lezione 11: Liste a Puntatori e Input/Output Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A

Fondamenti di Informatica e Laboratorio T-AB Prova Pratica - 16 Giugno 2009 Compito A Prima di cominciare: si scarichi il file StartKit4A.zip contenente i file di esempio. Avvertenze per la consegna: nominare i file sorgenti come richiesto nel testo del compito, apporre all inizio di ogni

Dettagli

FUNZIONI che operano su LISTE

FUNZIONI che operano su LISTE U N D I C E S I M A ESERCITAZIONE 2007/2008 L. MANDELLI FUNZIONI che operano su LISTE Sfruttando i tipi pelemento (puntatore ad un tipo elemento) e/o ELEMENTO codificare le seguenti funzioni che operano

Dettagli

Lab 09 Gestione file di testo

Lab 09 Gestione file di testo Fondamenti di Informatica e Laboratorio T-AB e Fondamenti di Informatica T1 Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2010/2011 Lab 09 Gestione file di testo Lab15 1

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 27 Giugno 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int i; Scrivere la porzione di codice che sostituisca

Dettagli

Fondamenti di Informatica T-1 modulo 2

Fondamenti di Informatica T-1 modulo 2 Fondamenti di Informatica T-1 modulo 2 Contenuti n Parametri passati a linea di comando 2 Overview n Il risultato del processo di compilazione/linking è un file eseguibile (un programma) n Abbiamo visto

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 27 Febbraio 2008 Esercizio 1 (6 punti) Scrivere una funzione che prende in ingresso un array di numeri reali V di dimensione n e restituisce una matrice

Dettagli

Fondamenti di Informatica 2 Soluzione della prova scritta del 21 Dicembre 2007

Fondamenti di Informatica 2 Soluzione della prova scritta del 21 Dicembre 2007 Fondamenti di Informatica 2 della prova scritta del 21 Dicembre 2007 Esercizio 1 (7 punti) Scrivere una funzione che prende in ingresso un array di numeri reali A di n elementi ed un array di numeri reali

Dettagli

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista

Esercizio 1 Liste: calcolo del numero di elementi ripetuti in una lista Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 11 Esercitazione: 27 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo del numero di

Dettagli

Lab 16 Gestione file binari"

Lab 16 Gestione file binari Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 16 Gestione file binari" Lab16 1 Esercizio 1" n Un registratore di cassa registra su di un file binario alcuni

Dettagli

/* Esempio di contenuto del file di testo: */ PaoloBellavista marzo.dat PaolaMello aprile.dat FedericoChesani marzo.dat CarloGiannelli marzo.

/* Esempio di contenuto del file di testo: */ PaoloBellavista marzo.dat PaolaMello aprile.dat FedericoChesani marzo.dat CarloGiannelli marzo. Fondamenti di Informatica L-A (A.A. 2005/2006) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista Prova d Esame di Venerdì 16 Dicembre 2005 durata 2h30m Compito A ESERCIZIO 1 (12 punti) Una ditta

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 6 Aprile 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int x = -1; Scrivere la porzione di codice che inserisce

Dettagli

Fondamenti di Informatica T 1, 2009/2010 Modulo 2 Prova d Esame 3a di Giovedì 11 Febbraio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T 1, 2009/2010 Modulo 2 Prova d Esame 3a di Giovedì 11 Febbraio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit3A.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio

Dettagli

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE

INFORMATICA - CdL in FISICA. COMPITO del 28/05/2003 SOLUZIONI PROPOSTE INFORMATICA - CdL in FISICA COMITO del 28/5/23 SOLUZIONI ROOSTE ESERCIZIO 1 Indicare i valori stampati dal seguente programma C. #include main() int *p, **q, x=, y=; p = &x; q = &p; *q = &y;

Dettagli

Gestione dei file in C

Gestione dei file in C Gestione dei file in C Fondamenti di Informatica Che cos è un file e a cosa serve? Memoria di massa vs memoria centrale q La memoria di massa (disco fisso) è un dispositivo di memorizzazione generalmente

Dettagli

Esercizio 1: Puntatori impiegati che sono manager

Esercizio 1: Puntatori impiegati che sono manager Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 10 Esercitazione: 25 gennaio 2006 Esercizi di riepilogo Problema: Esercizio 1: Puntatori impiegati che sono manager Si

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 25 Luglio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,-8,-4; int N = 7; int i; Scrivere la porzione di codice che sostituisca

Dettagli

accesso * leggiaccessi(char * nomefile, int * dim);

accesso * leggiaccessi(char * nomefile, int * dim); Fondamenti di Informatica L-A (A.A. precedenti al 2008/2009) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista Prova d Esame di Martedì 22 Dicembre 2009 durata 2h ESERCIZIO 1 (10 punti) Un'azienda

Dettagli

Esercizio 1 (17 punti)

Esercizio 1 (17 punti) Esercizio 1 (17 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 1 o luglio 2014 Un file di testo è utilizzato

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Soluzione della prova scritta del 4 Marzo 2005 Esercizio 1 (2 punti) Semplificare la seguente funzione booleana, mostrando il procedimento utilizzato per ottenere il risultato.

Dettagli

Lezione 22: Input/Output e Files

Lezione 22: Input/Output e Files Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard

Dettagli

Fondamenti di Informatica 1 - Compito A

Fondamenti di Informatica 1 - Compito A Fondamenti di Informatica 1 - Compito A Prof. Marco Gavanelli 18 Giugno 2007 Esercizio (16 punti) Un programma in linguaggio C deve accedere ad un database di studenti, memorizzato in un file binario studenti.bin.

Dettagli

PROVA SCRITTA DEL CORSO DI. Dedurre la funzione semplificata dall osservazione della tabella o con le leggi dell algebra booleana.

PROVA SCRITTA DEL CORSO DI. Dedurre la funzione semplificata dall osservazione della tabella o con le leggi dell algebra booleana. PROVA SCRITTA DEL CORSO DI MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (5 punti) Scrivere la tabella di verità della seguente funzione booleana: F = A

Dettagli

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Esercizi di programmazione in linguaggio C English Dictionary

Esercizi di programmazione in linguaggio C English Dictionary Esercizi di programmazione in linguaggio C English Dictionary Il file di testo wordnet.txt contiene un certo numero di parole (word) e il corrispondente significato (meaning) secondo il seguente formato:

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 19 Settembre 2006 Esercizio 1 (4 punti) Date le seguenti variabili int pari; int dispari; Stat; Stat s; A[] = 2,3,7,-2,5,-8,-4; int N = 7; int i; Scrivere

Dettagli

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Esercizio 1: funzione con valore di ritorno di tipo puntatore Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio

Dettagli

Aritmetica dei puntatori

Aritmetica dei puntatori Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore

Dettagli

$ PROVA INTERMEDIA 20 Aprile 2017

$ PROVA INTERMEDIA 20 Aprile 2017 $ PROVA INTERMEDIA 20 Aprile 2017 In un file binario alimenti.bin sono scritti i valori calorici (per 100 grammi di prodotto) dei prodotti alimentari. Per ciascun prodotto, il file alimenti.bin contiene

Dettagli

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi

Precedenza e associatività. Complementi sul C - 2. Esempi. Esempi Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >

Dettagli

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione

Dettagli

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 1B di Mercoledì 19 Gennaio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 1B di Mercoledì 19 Gennaio 2011 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit1B.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

Dettagli

Fondamenti di Informatica T-1 modulo 2

Fondamenti di Informatica T-1 modulo 2 Fondamenti di Informatica T-1 modulo 2 Contenuti Parametri passati a linea di comando 2 Overview Il risultato del processo di compilazione/linking è un file eseguibile (un programma) Abbiamo visto almeno

Dettagli

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C:

Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2. Siano date le seguenti definizioni di costanti e tipi in linguaggio C: Fondamenti Informatica B Soluzioni seconda prova intermedia del 30 gennaio 2006 temi 1 e 2 Esercizio 1 tema 1 Siano date le seguenti definizioni di costanti e tipi in linguaggio C: #define MAX_LENGTH 40

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

Allocazione dinamica memoria

Allocazione dinamica memoria Allocazione dinamica memoria Marco Casazza 11/12/2017 1 Esercizio 1 1 /* 2 Creare una lista bidirezionale di interi, ovvero una lista 3 che permette lo scorrimento in entrambe le direzioni ( dal primo

Dettagli

Fondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 1A di Giovedì 9 Gennaio 2014 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2013/2014 Modulo 2. Prova d Esame 1A di Giovedì 9 Gennaio 2014 tempo a disposizione 2h Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti

Dettagli

TUTORAGGIO INFORMATICA Settimana 5

TUTORAGGIO INFORMATICA Settimana 5 Leggenda: //commenti TUTORAGGIO INFORMATICA Settimana 5 Le funzioni e le matrici PROBLEMA 1: matrice simmetrica Una matrice si definisce simmetrica se gli elementi del suo triangolo superiore combaciano

Dettagli

Fondamenti di Informatica T-1, 2012/2013 Modulo 2. Prova d Esame 3A di Giovedì 14 Febbraio 2013 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2012/2013 Modulo 2. Prova d Esame 3A di Giovedì 14 Febbraio 2013 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit3A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

Dettagli

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica e informazione Prof. Mauro Negri Fondamenti di Informatica II prova in itinere 25 gennaio 2011 Matricola Cognome Nome Durata prova: 2 ore Istruzioni

Dettagli

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri

Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Politecnico di Milano - Dipartimento di Elettronica, informazione e Bioingegneria Prof. Mauro Negri Fondamenti di Informatica II appello 5 luglio 2014 Matricola Cognome Nome Istruzioni Durata prova: 2

Dettagli

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008 PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 9/6/2008 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (5 punti) Descrivere

Dettagli

File di testo e file binari Soluzione 1 (2)

File di testo e file binari Soluzione 1 (2) File di testo e file binari Soluzione 1 (2) printf("cifrazione del file: "); scanf("%s",nome); // Controllo che il file esista. while((fs=fopen(nome,"r"))==null) { printf("errore nel nome del file, file

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

1. Realizzare una funzione: int trovaritardatari(file *fprestiti, FILE *frate, Prestito *dest, int dim)

1. Realizzare una funzione: int trovaritardatari(file *fprestiti, FILE *frate, Prestito *dest, int dim) Fondamenti di Informatica L-A (A.A. 2005/2006 - CdS Ingegneria Informatica) Prof.ssa Mello & Prof. Bellavista Seconda Prova Intermedia del 07/12/2005 - durata 2.30h COMPITO C ESERCIZIO 1 (14 punti) Una

Dettagli

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30'

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 2A di Mercoledì 13 Gennaio 2010 tempo a disposizione 2h30' Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit2A.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 8 27/11/2018 Esercizi sull allocazione dinamica della memoria in C Il codice di questi esercizi é contenuto nella cartella parte1 1. Implementare una lista

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 5A di Mercoledì 13 Luglio 2011 tempo a disposizione 2h Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5A.zip contenente i file necessari (progetto Visual Studio ed eventuali altri file di esempio). Avvertenze per la consegna:

Dettagli

Esercizi. La funzione swapint() primo tentativo

Esercizi. La funzione swapint() primo tentativo Politecnico di Milano Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio di array. #include

Dettagli

int ninv; /* numero di inventario */

int ninv; /* numero di inventario */ 1) Scrivere il programma C che legga da un file di testo ("dati.dat") i record con dati relativi ad un archivio di dischi (utilizzando la struttura data) e scriva il file dati1.dat con i nomi degli artisti

Dettagli

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 1A di Giovedì 14 Gennaio 2016 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 1A di Giovedì 14 Gennaio 2016 tempo a disposizione 2h Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti

Dettagli

Esercitazione 12. Esercizi di Ricapitolazione

Esercitazione 12. Esercizi di Ricapitolazione Esercitazione 12 Esercizi di Ricapitolazione Esercizio Scrivere un programma che, dato un numero intero positivo, stampa la sua rappresentazione binaria. ALGORITMO Scriviamo una procedura stampa_bin che,

Dettagli

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire..

File. Molto astratta: file ha un nome (ex. Pippo.c), ed altre caratteristiche (dimensione, tipo, etc). Operazioni: copiare, cancellare, eseguire.. File I file sono una illusione creata dal Sistema Operativo(SO) Il SO usa opportune strutture dati per implementare tale astrazione (ad esempio: File Control Block, FCB) Sono usati per memorizzare in modo

Dettagli

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome

Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato

Dettagli

file fisico file logico

file fisico file logico I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi

Dettagli

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100

ESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100 ESERCIZIO 1 Scrivete un programma per la gestione delle informazioni relative ai voli giornalieri in partenza da un certo aeroporto. Il programma deve leggere da file le informazioni relative ai voli,

Dettagli

1. realizzare una funzione int estraimulte(file *fmutui, FILE *fpagamenti, Mutuo *dest, int dim)

1. realizzare una funzione int estraimulte(file *fmutui, FILE *fpagamenti, Mutuo *dest, int dim) Fondamenti di Informatica L-A (A.A. 2005/2006 - CdS Ingegneria Informatica) Prof.ssa Mello & Prof. Bellavista Seconda Prova Intermedia del 07/12/2005 - durata 2.30h COMPITO D ESERCIZIO 1 (14 punti) L ufficio

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Soluzione della prova scritta del 31 Gennaio 2006 Esercizio 1 (4 punti) Elencare i tipi di dato predefiniti del linguaggio C, precisandone il dominio e le operazioni principali

Dettagli

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132

Gestione dei files. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Gestione dei files Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Via Leopardi 132 Struttura del disco fisso Un disco fisso è composto da una serie di piatti sovrapposti Ogni piatto è

Dettagli

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IV.2019

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IV.2019 LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2018 2019 17.IV.2019 VINCENZO MARRA Indice Esercizio 1 2 Funzione reverse 2 2 Esercizio 2 2 Funzione equals

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Appello 19 Febbraio 2015 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene 4 esercizi e

Dettagli

TUTORAGGIO INFORMATICA Settimana 7

TUTORAGGIO INFORMATICA Settimana 7 TUTORAGGIO INFORMATICA Settimana 7 Leggenda: //commenti Ripasso, i file MOVIMENTI BANCARI Si realizzi in C un programma per consultare i movimenti bancari dei clienti di una banca. I movimenti sono salvati

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018 Esercitazioni di Fondamenti di Informatica - Lez. 9 /1/018 Esercizi sulla gestione dei file in C Il codice degli esercizi e contenuto nella cartella parte1 1. Creare una funzione C che legga tutto cio

Dettagli

PROVA SCRITTA DEL MODULO DI

PROVA SCRITTA DEL MODULO DI PROVA SCRITTA DEL MODULO DI MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (4 punti) Convertire in notazione binaria il valore 289 utilizzando al massimo

Dettagli

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 3A di Giovedì 13 Febbraio 2015 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 3A di Giovedì 13 Febbraio 2015 tempo a disposizione 2h Avvertenze per la consegna: apporre all inizio di ogni file sorgente un commento contenente i propri dati (cognome, nome, numero di matricola) e il numero della prova d esame. Al termine, consegnare tutti

Dettagli