Stampi su file output.txt il voto massimo ed il corrispondente numero di occorrenze. Ad esempio:

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Stampi su file output.txt il voto massimo ed il corrispondente numero di occorrenze. Ad esempio:"

Transcript

1 MOTIVATE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (8 punti) Scrivere un programma in linguaggio C che legga da un file input.txt una sequenza di interi rappresentanti dei voti d esame (quindi compresi tra 18 e 30): Esempio: Input.txt Stampi su file output.txt il voto massimo ed il corrispondente numero di occorrenze. Ad esempio: Output.txt 30 4 Nello scrivere il programma si implementino ed utilizzino le seguenti strutture dati e funzioni: (2 punti) Tipo di dato strutturato tipo_statistiche costituito da: Un intero chiamato massimo; un intero chiamato occorrenze. (1 punto) Tipo di dato tipo_voto costituito da N variabili di tipo intero. (6 punti) Funzione leggi_interi con: tipo in ingresso: stringa indicante il nome_file da aprire e una variabile di tipo tipo_voto chiamata voti; tipo in uscita: intero. La funzione legge dal file chiamato nome_file una sequenza di interi, e la memorizza in voti. Restituisce il numero di interi letti. (10 punti) Funzione estrai_statistiche con: tipo in ingresso: tipo_voto di nome voti, una variabile num_voti indicante il numero di voti di cui è costituita voti tipo in uscita: tipo_statistiche La funzione restituisce scrive negli slot massimo ed occorrenze di una variabile di tipo tipo_statistiche il voto massimo e il numero di volte che esso appare in voti. (6 punti) Funzione scrivi_risultati tipi in ingresso: tipo_statistiche chiamata s tipo in uscita: vuoto Stampa su file output.txt gli slot massimo e occorrenze di s. Soluzione.

2 Definizione del tipo di dato richiesto: typedef int tipo_voto[n]; typedef struct int massimo; int occorrenze; tipo_statistiche; Prototipi delle funzioni assegnate: int leggi_interi(char *nome_file, tipo_voto voti); tipo_statistiche estrai_statistiche(tipo_voto voti, int n); void scrivi_risultati(tipo_statistiche s); Implementazione del programma: /*Programma per la lettura di voti e docenti*/ #include <stdio.h> #define N 100 /*Definizione del tipo*/ /*Prototipi delle funzioni*/ int main() tipo_voto voti; tipo_statistiche s; int n; n=leggi_interi( input.txt,voti); s=estrai_statistiche(voti,n); scrivi_risultati(s); return 0; Implementazione delle singole funzioni: int leggi_interi(char* nome_file, tipo_voto voti) FILE *fp; int n; n=0; fp=fopen(nome_file, r ); while((!feof(fp))&&(n<n)) fscanf(fp, %d,&voti[n]); n++; fclose(fp); return n; tipo_statistiche estrai_statistiche(tipo_voto voti, int n) Elementi di Informatica 2

3 tipo_statistiche s; int i; /* prima di tutto trovo il massimo voto */ s.massimo=0; for(i=0; i<n; i++) if(voti[i]>s.massimo) s.massimo=voti[i]; /* ora trovo il numero di occorrenze del massimo voto */ s.occorrenze=0; for(i=0; i<n; i++) if(voti[i]==s.massimo) s.occorrenze++; return s; void scrivi_risultati(tipo_statistiche s) FILE *fp; fp=fopen( output.txt, w ); fprintf(fp, %d %d\n,s.massimo, s.occorrenze); fclose(fp); Elementi di Informatica 3

4 ESERCIZIO 2 (8 punti) Scrivere un programma in linguaggio C che legga da un file input.txt una sequenza di interi v i con i=0,,n-1. Scriva su file output.txt una sequenza s i tale che s 0=v 0 e s i=s i-1+v i. Il primo valore intero del file è relativo al numero complessivo di interi da leggere. Esempio: Input.txt Output.txt Nello scrivere il programma si implementino ed utilizzino le seguenti strutture dati e funzioni: (3 punti) Tipo di dato strutturato tipo_dati costituito da: Puntatore ad intero chiamato v; Puntatore ad intero chiamato s; Una variabile intera n corrispondente al numero di dati contenuti in v e s; (6 punti) Funzione leggi_dati con: tipo in ingresso: stringa indicante il nome_file da aprire; tipo in uscita: tipo_dati. La funzione legge dal file chiamato nome_file una sequenza di interi, e li memorizza nello slot v della variabile di tipo tipo_dati restituita in uscita. La funzione memorizza nello slot n il numero di valori letti da file. (10 punti) Funzione calcola_somma con: tipo in ingresso: puntatore a vettore di interi v, intero chiamato n tipo in uscita: puntatore a vettori di interi La funzione scrive, nella componente i-esima di un vettore dinamico s, restituito in uscita, la sequenza s i secondo la definizione fornita dal testo, in funzione della sequenza v i, rappresentata da v. (6 punti) Funzione scrivi_risultati tipi in ingresso: tipo_dati chiamato d tipo in uscita: vuoto Stampa su file output.txt le componenti dello slot s di d. Elementi di Informatica 4

5 Soluzione. /*Programma per il calcolo della somma cumulativa di una stringa di interi*/ #include <stdio.h> typedef struct int *v, *s; int n; tipo_dati; tipo_dati leggi_dati(char* nome_file) FILE *fp; tipo_dati d; int i; fp=fopen(nome_file, r ); fscanf(fp, %d,&d.n); i=0; d.v=(int*)malloc(sizeof(int)*d.n); while(i<d.n) fscanf(fp, %d,&d.v[i]); i++; fclose(fp); return d; int* calcola_pari_dispari(int* v, int n) int* s; int i; s=(int*)malloc(sizeof(int)*n); s[0]=v[0]; for(i=1; i<n; i++) s[i]=s[i-1]+v[i]; return s; void scrivi_risultati(tipo_dati d) FILE *fp; int i; fp=fopen( output.txt, w ); for(i=0; i<d.n; i++) fprintf(fp, %d,d.s[i]); fclose(fp); Elementi di Informatica 5

6 int main() tipo_dati d; d=leggi_dati( input.txt ); d.s=calcola_somme(d.v,d.n); scrivi_risultati(d); /*Leggo*/ /*Elaboro*/ /*Scrivo*/ /*Ciclo della macchina di Von Neumann*/ free(d.v); free(d.s); return 0; Elementi di Informatica 6

7 ESERCIZIO 3 (7 punti) Scrivere un programma in linguaggio C che legga da un file input.txt una sequenza di reali rappresentanti il saldo iniziale e la lista dei movimenti di un conto corrente (in entrata e in uscita). Esempio: Input.txt Stampi su file output.txt il saldo iniziale, quello finale, la somma delle entrate e quella delle uscite. Per esempio: Output.txt Nello scrivere il programma si implementino ed utilizzino le seguenti strutture dati e funzioni: (4 punti) Tipo di dato strutturato tipo_movimenti costituito da: Un reale chiamato saldo_iniziale, un reale chiamato saldo_finale; Due liste concatenate di reali chiamate entrate e uscite, definite secondo gli schemi illustrati a lezione e dotate delle quattro operazioni fondamentali CONS, HEAD, TAIL e ISEMPTY. Le variabili sono di tipo tipo_lista. Due reali chiamati somma_entrate e somma_uscite. (8 punti) Funzione leggi_movimenti con: tipo in ingresso: stringa indicante il nome_file da aprire; tipo in uscita: tipo_movimenti. La funzione legge dal file chiamato nome_file una sequenza di reali caratterizzanti il saldo e la lista movimenti, e memorizza negli appositi slot di una variabile m di tipo tipo_movimenti, restituita in uscita: il saldo iniziale e la sequenza dei movimenti in entrata (positivi) e quelli in uscita (negativi) negli slot corrispondenti entrate e uscite. (6 punti) Funzione somma_vettore con: tipo in ingresso: tipo_lista di nome l tipo in uscita: reale La funzione restituisce la somma dei valori presenti in l. (8 punti) Funzione scrivi_risultati tipi in ingresso: tipo_movimenti chiamata m tipo in uscita: vuoto Stampa su file output.txt ogni la sequenza di slot di m: saldo_iniziale, saldo_finale, somma_entrate, somma_uscite. Elementi di Informatica 7

8 Soluzione. Definizione del tipo di dato richiesto: typedef struct float saldo_iniziale, saldo_finale; tipo_lista *entrate, *uscite; float somma_entrate, somma_uscite; tipo_movimenti; Prototipi delle funzioni assegnate: tipo_movimenti leggi_movimenti(char *nome_file); float somma_vettore(tipo_lista* v); void scrivi_risultati(tipo_movimenti m); Implementazione del programma: /*Programma per la lettura di voti e docenti*/ #include <stdio.h> /*Definizione del tipo*/ /*Prototipi delle funzioni*/ int main() tipo_movimenti m; m=leggi_movimenti( input.txt ); m.somma_entrate=somma_vettore(m.entrate); m.somma_uscite=-somma_vettore(m.uscite); m.saldo_finale=m.saldo_iniziale+m.somma_entrate-m.somma_uscite; scrivi_risultati(m); /*DA aggiungere: funzione di deallocazione delle liste concatenate in m*/ return 0; Implementazione delle singole funzioni: Elementi di Informatica 8

9 tipo_movimenti leggi_interi(char* nome_file) FILE *fp; tipo_movimenti m; float valore; m.entrate=null; m.uscite=null; fp=fopen(nome_file, r ); fscanf(fp, %f, &m.saldo_iniziale); while((!feof(fp)) fscanf(fp, %f,&valore); if(valore>0) m.entrate=cons(m.entrate,valore); else m.uscite=cons(m.uscite,valore); fclose(fp); return m; float somma_vettore(tipo_lista* l) float somma; somma=0.0; while(!isempty(l)) somma=somma+head(l); l=tail(l); return somma; void scrivi_risultati(tipo_movimenti m) FILE *fp; fp=fopen( output.txt, w ); fprintf(fp, %f %f,m.saldo_iniziale,m.saldo_finale); fprintf(fp, %f %f\n,m.somma_entrate,m.somma_uscite); fclose(fp); Elementi di Informatica 9

10 ESERCIZIO 4 (4 punti) Scrivere un programma in linguaggio C che legga da un file input.txt una sequenza di triple formate ciascuna da un intero e un float, indicanti matricola e media voti di uno studente, e un carattere avente come possibili valori R, P, B, indicante il tipo di tesi (Ricerca, Progetto, Bibliografica) da egli richiesta. Il programma scriva su un file output.txt, il numero di matricola dello studente avente media più alta per ciascuno dei tipi di tesi di richiesto (nell ordine Ricerca, Progetto, Bibliografica). Se non c è alcuno studente con tesi di un certo tipo, l output corrispondente dev essere Studente assente. Esempio: File input.txt R B B R B R Con l esempio di sopra il file output.txt va scritto come segue: File output.txt Studente assente Nello scrivere il programma si implementino ed utilizzino le seguenti strutture dati e funzioni: (1 punti) Tipo dato Tesi costituito da un carattere. (2 punti) Tipo dato strutturato Studenti costituito da un vettore statico, chiamato matricole, di N variabili intere corrispondenti alle matricole lette, un vettore statico, chiamato medie, di N float corrispondenti alle medie lette, un vettore statico, chiamato tesi, di N variabili di tipo Tesi, un intero n corrispondente al numero di variabili effettivamente inizializzate. (4 punti) Funzione leggi con: * tipo in ingresso: una stringa nomefile * tipo in uscita: puntatore a Studenti Legge da file di nome nomefile una sequenza di triple costituita da un intero, un float, e un carattere. La i-esima tripla letta è memorizza nelle corrispondenti i-esime componenti degli slot matricole, medie e tesi, di una variabile puntatore a Studenti restituita poi in uscita. (5 punti) Funziona calcola_massimo con * tipi in ingresso: una variabile puntatore a Studenti e una variabile t di tipo Tesi; * tipo in uscita: intero, ovvero la matricola corrispondente alla massima media riscontrata tra le matricole con tesi eguali a t. Restituisce -1 se non ci sono tesi eguali a t. (2 punti) Funzione scrivi con: * tipi in ingresso: una stringa nomefile, un intero * tipo in uscita: void Scrive su file di nome nomefile, l intero fornito in ingresso. N.B. scegliere la modalità appropriata per la scrittura su file Elementi di Informatica 10

11 Soluzione. Tipi da definire: typedef Tesi char; typedef struct int matricole[n]; float medie[n]; Tesi tesi[n]; int n; Studenti; Prototipi delle funzioni assegnate: Studenti* leggi(char* nomefile); int calcola_massimo(studenti* l, Tesi t); void scrivi(char* nomefile, int m); Implementazione del programma: /*Programma per l analisi di vettori*/ #include <stdio.h> #define N 100 /*esempio*/ /*Definizione del tipo*/ /*Prototipi delle funzioni*/ int main() Studenti *l; int max_matricola, i; l=leggi( input.txt ); for(i=0; i<3; i++) switch(i) case 0: max_matricola=calcola_massimo(l, R ); break; case 1: max_matricola=calcola_massimo(l, P ); break; case 2: max_matricola=calcola_massimo(l, B ); scrivi( output.txt,max_matricola); return 0; Elementi di Informatica 11

12 Implementazione delle singole funzioni: Studenti* leggi(char* nomefile) FILE *fp; Studenti* l; l=(studenti*)malloc(sizeof(studenti)); l->n=0; fp=fopen(nomefile, r ); while((!feof(fp))&&(l->n<n)) fscanf(fp, %d %f %c,&l.matricole[l->n],&l.medie[l->n],&l.tesi[l->n]); l->n++; fclose(fp); return l; int calcola_massimo(studenti* l, tipo_tesi t) int i, maxmat; float maxm; maxmat=-1; maxm=-1.0; for(i=0; i<l->n; i++) if((l->tesi[i]==t)&&(l->medie[i]>maxm)) maxm=l->medie[i]; maxmat=l->matricole[i]; return maxmat; /*restituisce -1 se non ho trovato tesi di tipo t*/ void scrivi(char* nomefile, int m) FILE *fp; fp=fopen(nomefile, a ); if(m==-1) fprintf(fp, Studente assente\n ); else fprintf(fp, %d\n,m); fclose(fp); Elementi di Informatica 12

13 Il seguente esercizio parte da un problema rappresentato ad alto livello di astrazione, la cui sfida consiste nel declinare la soluzione al livello basso del dettaglio di programmazione in C. Lo si può considerare tra gli esercizi più complessi nell ambito degl insegnamenti impartiti nel corso. ESERCIZIO 5 (7 punti) Nel laboratorio del Prof. Marcialis lo staff ha realizzato un robot in grado di stimare, tramite due videocamere poste in corrispondenza degli occhi, la forma delle persone in una scena, in modo tale da calcolare il Body Mass Index (BMI Indice di Massa Corporea) e suggerire la dieta maggiormente rispondente al loro stato. Durante la fase di osservazione, il robot scrive in un file persone.txt i dati riferiti a peso in kg ed altezza in m. Tuttavia, gli manca l intelligenza per calcolare il BMI attraverso la formula: BMI = peso/altezza 2. Il Prof. Marcialis incarica voi di aggiungere tale intelligenza, predisponendo un programma C che legga il file persone.txt, calcoli il BMI e scriva su un file dieta.txt, per ogni persona, la classificazione fornita dalla figura a lato. Più tardi il robot leggerà a ciascuna persona i dati memorizzati nel file creato in seguito all elaborazione scritta da voi. Il file persone.txt è formattato, per esempio, come segue: Dove ciascuna coppia di valori reali per riga rappresenta rispettivamente il peso e l altezza di un soggetto osservato dal robot. Nel file dieta.txt andrà invece scritto il relativo BMI calcolato secondo la formula di cui sopra e la classificazione associata, come dall esempio: 12.3 Sottopeso 35.6 Obesità di medio grado 22.2 Normopeso 1 0 Come si può notare, l elenco dei soggetti è scritto in ordine inverso rispetto a quello fornito nel file persone.txt. A fine file andrà scritta la coppia di valori corrispondenti al numero di soggetti sottopeso (primo valore) e affetti da obesità di alto grado (secondo valore). Nell esempio di cui sopra, tali valori sono rispettivamente 1 e 0. Elementi di Informatica 13

14 (6 punti) Nell implementare il programma, definire: un tipo di dato strutturato Biometria, contenente tre slot reali chiamati peso, altezza, BMI e una stringa di 50 caratteri chiamata classificazione; un tipo di lista concatenata lbiometrie, contenente una variabile di tipo Biometria per ogni elemento di lista. Per questo tipo si considerino già implementate le funzioni CONS, HEAD, TAIL, ISEMPTY. Infine, scrivete le seguenti funzioni: (6 punti) Funzione leggidati: Legge da file già aperto una coppia di valori di peso ed altezza associati dal robot ad un dato soggetto, li inserisce in una variabile di tipo Biometria e la restituisce in uscita. (8 punti) Funzione calcolabmi: Riceve in ingresso un puntatore a Biometria e assegna ai relativi slot la coppia BMI-classificazione in base alla tabella fornita nel testo del problema. (4 punti) Funzione scrivirisultati: Riceve in ingresso una lista di tipo lbiometrie e un nome di file nomefile e vi scrive le coppie di valori secondo il formato indicato nell esempio, ovvero BMI e classificazione per tutti i soggetti, calcolando anche la coppia di valori di fine file relativa a numero di soggetti sottopeso e con obesità di alto grado. NOTA: E proibito alterare i requisiti e l elenco dei parametri forniti dal testo. Si legga attentamente il testo dell esercizio per non incorrere in tale errore Elementi di Informatica 14

15 Soluzione. Definizione dei tipi. Liste: typedef struct Lista_Biometrie Biometria b; struct Lista_Biometrie *successivo; lbiometrie; typedef struct float peso, altezza, BMI; char classificazione[50]; Biometria; Biometria leggidati(file *f) Biometria b; fscanf(f,"%f %f", &b.peso, &b.altezza); return b; void calcolabmi(biometria *b) /* passaggio per variabile ovvero per puntatore necessario per alterare gli slot della variabile b */ float BMI; BMI=b->peso/((b->altezza) * (b->altezza)); if (BMI<18.5) sprintf(b->classificazione, "Sottopeso"); /*Uso sprintf per scrivere su stringa la classificazione del soggetto*/ else if (BMI<25.) sprintf(b->classificazione, "Normopeso"); else if (BMI<30.) sprintf(b->classificazione, "Sovrappeso"); else if (BMI<40.) sprintf(b->classificazione, "Obesità di medio grado"); else sprintf(b->classificazione, "Obesità di alto grado"); b->bmi=bmi; Elementi di Informatica 15

16 void scrivirisultati(lbiometrie* l, char *nomefile) Biometria b; FILE *f; int ns, no; ns=0; no=0; f=fopen(nomefile,"w"); while (!ISEMPTY(l)) /*Finché non arrivo a fine lista */ b=head(l); fprintf(f,"%.1f %s\n",b.bmi, b.classificazione); if (!strcmp(b.classificazione,"sottopeso")) /*strcmp funzione della librerie string.h per il confronto di stringhe*/ ns++; else if(!strcmp(b.classificazione,"obesità di alto grado")) no++; l=tail(l); fprintf(f, "%d %d\n", ns, no); fclose(f); int main() FILE *fin; lbiometrie *lb=null; Biometria b; fin=fopen("persone.txt","r"); while(!feof(fin)) b=leggidati(fin); /*leggidati e calcolabmi gestiscono */ calcolabmi(&b); /* un utente alla volta */ lb=cons(lb,b); fclose(fin); scrivirisultati(lb,"dieta.txt"); free(lb); /*completamento della deallocazione (v. TAIL)*/ return 0; Elementi di Informatica 16

17 Sebbene non richiesta, si fornisce l implementazione di HEAD, CONS, TAIL e ISEMPTY: lbiometrie* CONS(lBiometrie *l, Biometria b) /* in questa implementazione la testa della lista contiene l ultimo elemento inserito */ lbiometrie *nuova; nuova=(lbiometrie*)malloc(sizeof(lbiometrie)); nuova->b=b; nuova->successivo=l; return nuova; Biometria HEAD(lBiometrie *l) return l->b; lbiometrie* TAIL (lbiometrie *l) lbiometrie *t; t=l->successivo; free(l); /* inclusa funzionalità di deallocazione della testa */ return t; int ISEMPTY(lBiometrie *l) return l==null; Struttura del programma: /*Programma per la gestione di dati biometrici per il calcolo della dieta Fornito da un robot. Su file persone.txt sono rilevate le coppie relative ai valori di peso ed altezza. Il programma calcola BMI e relativa classificazione associate a tali valori e li stampa su file dieta.txt riportando anche il numero di soggetti sottopeso e con obesità di alto grado esaminati. */ #include <stdio.h> #include <stdlib.h> #include <string.h> /*Definizione dei tipi*/ /*Funzioni di gestione della lista: CONS, HEAD, TAIL, ISEMPTY */ /*Funzioni leggidati, calcolabmi e scrivirisultati */ /*Funzione main*/ Elementi di Informatica 17

18 Il seguente esercizio rappresenta un po l essenza del corso di Elementi di Informatica: sono utilizzate tutte le strutture e funzionalità base spiegate a lezione. Con questo esercizio potete vagliare un livello di preparazione per così dire semi-avanzato, raggiunto il quale non solo siete in grado di padroneggiare tecniche di programmazione fondamentali (il conteggio, la variabile di appoggio, la permuta) nonché gli algoritmi di base come il massimo (minimo), la ricerca e l ordinamento, ma di sfruttarle tutte assieme per costruire un applicazione completa, con tipi di dato strutturato tutt altro che banali, per quanto possano esisterne di enormemente più complessi. Il programma che segue è infatti un piccolo gestore di basi di dati in forma di agenda. Le varianti sono tantissime, da dati anagrafici generici a informazioni sanitarie e di altra natura. Manca la gestione a liste concatenate, ma non è difficile pensare di utilizzarle in luogo della lista dinamica semplice suggerita ed implementata nella soluzione. ESERCIZIO 6 Siete entrati in possesso dell agenda del vostro migliore amico. Essa è conservata in un file agenda.txt nella quale ogni riga ha due elementi: il primo è la data di un certo evento, nel formato gg mm anno con due cifre per gg e mm, quattro per anno (es ), e la seconda, separata da uno spazio, è la descrizione dell evento. Sfortunatamente, gli eventi sono inseriti in modo totalmente casuale, non ordinato, quindi reperire un evento particolare o capire quale sia il primo evento inserito è molto difficile. Per questo decidete di scrivere un programma C che vi permette di svolgere diverse operazioni, dopo aver portato l agenda del vostro amico dal file alla memoria del computer. (1 punto) Definite innanzitutto il tipo strutturato voceagenda, composto da uno slot data di tipo strutturato TData (costituito da tre interi rappresentanti i valori di giorno, mese e anno) e una stringa evento di massimo 50 caratteri finalizzata a contenere la descrizione dell evento. (1 punto) Definite un tipo lista dinamica TAgenda di strutture di tipo voceagenda. Tale lista verrà gestita dalle primitive CONS, TAIL, HEAD e ISEMPTY come visto a lezione. Non è necessario implementarle. (4 punti) Funzione leggiagenda: - Input: il nome del file espresso come stringa - Output: una lista dinamica TAgenda. (3 punti) Funzione confrontadate: - Ingresso: due parametri d1 e d2 di tipo TData; - Output: -1 se d1 precede d2, 0 se contengono la stessa data, 1 se d1 segue d2. Letta l agenda da file, il programma deve permettere, a ciclo continuo, di poter scegliere tra diverse funzionalità, digitando una cifra compresa tra 0 e 5. Digitando 0, si esce dal programma. Per ogni altro valore consentito, le funzionalità sono definite come segue: 1. (5 punti) Funzione primadata: - Input: lista dinamica TAgenda; - Output: variabile di tipo TData contenente la prima data inserita in ordine di tempo. Tale data viene anche stampata a video nel formato gg/mm/aaaa. 2. (2 punti) Funzione ultimadata: analoga nell I/O a primadata, restituisce l ultima data inserita in ordine di tempo dopo averla stampata a video. 3. (8 punti) Funzione ordinadate: - Input: lista dinamica TAgenda; - Output: restituisce la lista con le voci dell agenda ordinate in ordine crescente di data. 4. (6 punti) Funzione stampaevento: - Input: lista dinamica TAgenda; - Output: Non necessario. Scrive su video la descrizione dell evento o degli eventi corrispondenti ad una data fornita da tastiera, se presente in agenda. 5. (3 punti) Funzione scriviagenda: scrive su file agenda.txt l agenda contenuta in memoria nello stesso formato con il quale è stata letta (se presente). Sovrascrive eventualmente quella già presente. Esempio: Se viene digitato 3, il programma esegue la funzione ordinadate. Si effettui, dove ritenuto necessario, il passaggio dei parametri per puntatore. Elementi di Informatica 18

19 Soluzione Prima di tutto, presentiamo il listato completo, da copiare riga per riga manualmente (niente cut+paste) su un editor e poi procedure alla compilazione. E molto probabilmente che agendo così facciate errori di ricopiatura, ma è molto meglio perché sarete forzati tramite il compilatore a trovare quegli errori ed a sforzarvi di capire perché le cose non stanno funzionando. /*Programma per la gestione di un'agenda tramite lista dinamica*/ #include <stdio.h> #include <stdlib.h> /* Definizione dei tipi */ typedef struct int giorno, mese, anno; TData; typedef struct TData data; char evento[50]; voceagenda; typedef struct voceagenda *voci; int n; TAgenda; /* Definizione delle funzioni base di lista*/ TAgenda inizializza() TAgenda nuova; nuova.n=0; return nuova; TAgenda CONS(TAgenda *agenda, voceagenda v) int i; TAgenda nuova; nuova.voci=(voceagenda*)malloc(sizeof(voceagenda)*(agenda->n+1)); for (i=0; i<agenda->n; i++) nuova.voci[i+1]=agenda->voci[i]; nuova.voci[0]=v; nuova.n=agenda->n+1; if (agenda->n) free(agenda->voci); return nuova; Elementi di Informatica 19

20 TAgenda TAIL(TAgenda *agenda) int i; TAgenda nuova; nuova.n=agenda->n-1; if(nuova.n) nuova.voci=(voceagenda*)malloc(sizeof(voceagenda)*nuova.n); for (i=0; i<nuova.n; i++) nuova.voci[i]=agenda->voci[i+1]; free(agenda->voci); return nuova; voceagenda HEAD(TAgenda agenda) return agenda.voci[0]; int ISEMPTY(TAgenda agenda) return agenda.n==0; /*Definizione delle funzioni*/ TAgenda leggiagenda(char *nomefile) FILE *f; TData d; voceagenda v; TAgenda agenda; int n; f=fopen(nomefile,"r"); agenda=inizializza(); while(!feof(f)) n=fscanf(f,"%d %d %d", &d.giorno, &d.mese, &d.anno); if(n>0) fscanf(f,"%s", &v.evento[0]); v.data=d; agenda=cons(&agenda,v); fclose(f); return agenda; Elementi di Informatica 20

21 int confrontadate(tdata d1, TData d2) if (d1.anno<d2.anno) return -1; else if (d1.anno>d2.anno) return 1; if (d1.mese<d2.mese) return -1; else if (d1.mese>d2.mese) return 1; if (d1.giorno<d2.giorno) return -1; else if (d1.giorno>d2.giorno) return 1; return 0; TData primadata(tagenda a) TData prima; int i; prima=a.voci[0].data; for (i=1; i<a.n; i++) if (confrontadate(a.voci[i].data,prima)<0) prima=a.voci[i].data; printf("\n\ndata meno recente: %2d/%2d/%4d\n\n",prima.giorno, prima.mese, prima.anno); return prima; TData ultimadata(tagenda a) TData ultima; int i; ultima=a.voci[0].data; for (i=1; i<a.n; i++) if(confrontadate(a.voci[i].data,ultima)>0) ultima=a.voci[i].data; printf("\n\ndata piu\' recente: %2d/%2d/%4d\n\n",ultima.giorno, ultima.mese, ultima.anno); return ultima; void scambiavoci(voceagenda *v1, voceagenda *v2) voceagenda t; t=*v1; *v1=*v2; *v2=t; Elementi di Informatica 21

22 /* Nel seguito la versione sintetica dell algoritmo di selection-sort Implementate la versione che fa uso della funzione primadata Scrivetene una variante primadata che oltre all agenda riceve l indice di partenza del vettore su cui fare la ricerca della prima data. Vedrete che non è difficile. */ TAgenda ordinadate(tagenda *a) int i, j; for(i=0; i<a->n-1; i++) for(j=i+1; j<a->n; j++) if (confrontadate(a->voci[i].data,a->voci[j].data)>0) scambiavoci(&(a->voci[i]),&(a->voci[j])); return *a; void stampaevento(tagenda a, TData d) int i; int trovato; printf("\n"); for(i=0, trovato=0; i<a.n; i++) if(!confrontadate(d,a.voci[i].data)) printf("%s\n",a.voci[i].evento); trovato=1; if(!trovato) printf("\ndata non presente - eventi non trovati \n"); void stampaagenda(file *f, TAgenda a) int i; voceagenda v; TData d; for(i=0; i<a.n; i++) v=a.voci[i]; d=v.data; fprintf(f,"%2d %2d %4d %s\n",d.giorno, d.mese, d.anno, v.evento); void scriviagenda(tagenda a) FILE *f; f=fopen("agenda.txt","w"); stampaagenda(f,a); fclose(f); Elementi di Informatica 22

23 int stampamenu() int opzione; printf("\nseleziona una delle seguenti:"); printf("\n1 Stampa data meno recente"); printf("\n2 Stampa data piu\' recente"); printf("\n3 Ordina agenda per data"); printf("\n4 Cerca un evento per data"); printf("\n5 Scrivi agenda su file"); printf("\n6 Scrivi agenda su schermo"); printf("\n0 Esci dal programma\nopzione: "); scanf("%d",&opzione); return opzione; int seleziona(tagenda a) TData d; int opzione; opzione=stampamenu(); switch (opzione) case 0: break; case 1: d=primadata(a); break; case 2: d=ultimadata(a); break; case 3: a=ordinadate(&a); break; case 4: printf("\ninserire data utile: "); scanf("%d %d %d",&d.giorno, &d.mese, &d.anno); stampaevento(a,d); break; case 5: scriviagenda(a); break; case 6: stampaagenda(stdout, a); /*stdout è un identificativo di file sempre aperto e*/ /* corrisponde allo schermo */ printf("\n"); return opzione; int main() TAgenda a; int opzione; a=leggiagenda("agenda.txt"); do opzione=seleziona(a); while(opzione); printf("\nuscita dal programma.\n"); free(a.voci); return 0; Elementi di Informatica 23

24 Dall analisi del codice si evince la seguente strutturazione modulare, rappresentabile mediante approccio TOP-DOWN come segue: Pur non richieste e non necessarie, le funzioni selezione, scambia, stampamenu e stampaagenda permettono una maggiore modularità e brevità dei singoli componenti funzionali consentendo una visualizzazione immediate dell algoritmo alla base di ciascuna funzione. A sinistra le funzioni di gestione delle liste utili nel caso specifico sono soltanto CONS e inizializza, essendo le sei funzionalità richieste caratterizzate da necessità di accesso diretto a più elementi della lista contemporaneamente, e quindi non immediatamente realizzabili per mezzo di ISEMPTY, HEAD e TAIL. La funzione stampaagenda consente sia la stampa su file aperto mediante approccio standard, sia la stampa a video in quanto l identificativo stdout è puntatore allo stream video, analogo allo stream su file, con la differenza che non necessita l apertura e la chiusura. Le funzioni selezione e stampamenu permettono infine di visualizzare la main in una forma tale che, a parte la lettura iniziale dell agenda da file, risalta la lettura ciclica di una variabile di opzione in base alla quale viene associata la funzionalità da eseguire. Elementi di Informatica 24

ESERCIZIO 1 (5 punti) Convertire in binario il valore, espresso in decimale, Si usi la rappresentazione in virgola fissa.

ESERCIZIO 1 (5 punti) Convertire in binario il valore, espresso in decimale, Si usi la rappresentazione in virgola fissa. PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 23/9/2008 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (5 punti) Convertire

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) (1) (2 punti) Scrivere la tabella di verità degli operatori OR e AND.

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

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009

PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 17/2/2009 PROVA SCRITTA DEL CORSO DI CORSO DI LAUREA IN INGEGNERIA BIOMEDICA ED ELETTRICA 7/2/2009 MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO (5 punti) Esprimere

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

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

Sommario FONDAMENTI DI INFORMATICA 1. Il tipo FILE. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione

Esercizio n.1 FONDAMENTI DI INFORMATICA 1. Esercizio n.2. Soluzione. LINGUAGGIO C Funzioni e gestione file: esercitazione Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Esercizio 1: media di numeri reali (uso funzioni e struct)

Esercizio 1: media di numeri reali (uso funzioni e struct) Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 5 Esercitazione: 2 novembre 2005 Esercizi sulle funzioni Esercizio 1: media di numeri reali (uso funzioni e struct) Le

Dettagli

Sommario ELEMENTI DI INFORMATICA. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file

Sommario ELEMENTI DI INFORMATICA. Passaggio da standard I/O. LINGUAGGIO C Gestione dei file Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica ELEMENTI DI INFORMATICA http://people.unica.it/gianlucamarcialis/ A.A. 2018/2019 Sommario Scrivere e leggere da qualunque I/O

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

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 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

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

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

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

Definizione Allocazione di variabili e vettori Le liste

Definizione Allocazione di variabili e vettori Le liste Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica ELEMENTI DI INFORMATICA http://people.unica.it/gianlucamarcialis/ A.A. 2018/2019 Docente: Gian Luca Marcialis LINGUAGGIO C Puntatori

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

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

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

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

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

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

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine)

La copia di un file. contare di quanti caratteri sia composto il file (e quindi determinare la dimensione del file di origine) La copia di un file Nell'esercizio di oggi cerchiamo di implementare un programma che permetta di effettuare la copia di un file di testo. L'operazione di copia, oltre a permettere di creare un nuovo file

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

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

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 8 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Informazioni Docente di supporto

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

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica ed Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 2016/2017 Docente: Gian Luca Marcialis

Dettagli

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Primo programma in C

Primo programma in C Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file

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

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

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

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

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

File e puntatori a file

File e puntatori a file File e puntatori a file Vitoantonio Bevilacqua vitoantonio.bevilacqua@poliba.it La libreria stdio.h mette a disposizione delle funzioni che hanno la peculiarità di trattare con questa nuova tipologia di

Dettagli

Esercizi. Filtraggio

Esercizi. Filtraggio Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)

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

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

Implementazione dell albero binario in linguaggio C++

Implementazione dell albero binario in linguaggio C++ Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve

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

Esercizio 1: parole nel testo

Esercizio 1: parole nel testo Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 6 Esercitazione: 11 novembre 2005 Esercizi di riepilogo in preparazione alla prima prova intermedia Problema (tratto da

Dettagli

Gestione dei File. Credits Prof. Campi

Gestione dei File. Credits Prof. Campi Gestione dei File Credits Prof. Campi 1 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi Si usano dall'interno dei programmi Realizzano la persistenza dei dati cioè

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

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

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

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

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Dettagli

PROGRAMMA = ALGORITMO

PROGRAMMA = ALGORITMO Corso di Laurea Scienze Prof. San. Tec., Area Tecnico-Assistenziale SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Anno Accademico 2005-2006 Prof. Fausto Passariello Corso Integrato Metodologia della Ricerca

Dettagli

Introduzione al linguaggio C Dati aggregati

Introduzione al linguaggio C Dati aggregati Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre

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

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0; Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare

Dettagli

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 3A di Mercoledì 16 Febbraio 2011 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2010/2011 Modulo 2. Prova d Esame 3A di Mercoledì 16 Febbraio 2011 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

#include <stdio.h> #include <stdlib.h> #define L 20 void Proc(char [], int); int N=L; main () { char *s; int i;

#include <stdio.h> #include <stdlib.h> #define L 20 void Proc(char [], int); int N=L; main () { char *s; int i; Fondamenti di Informatica L-A (A.A. 2002/2003) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista Prova d Esame di Martedì 09/09/2003 durata 2h:30m ESERCIZIO 1 (12 punti) Si scriva una procedura

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

Scrittura formattata - printf

Scrittura formattata - printf Esercizi su Input/Output con formato FormattedIO 1 Scrittura formattata - printf Funzione printf int printf ( , ) La funzione restituisce un valore intero uguale ai caratteri

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

Dettagli

Esercitazioni di Informatica (CIV)

Esercitazioni di Informatica (CIV) Esercitazioni di Informatica (CIV) Puntatori, Tema d esame Andrea Romanoni e-mail: andrea.romanoni@polimi.it website: http://home.deib.polimi.it/romanoni/ 26 novembre 2015 Esame del 21 luglio 2014 Testo

Dettagli

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione.

Ogni parte non cancellata a penna sarà considerata parte integrante della soluzione. Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prova in itinere del 13 Novembre 2012 COGNOME E NOME RIGA COLONNA MATRICOLA Spazio riservato ai docenti Il presente plico contiene

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

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

Fondamenti di Informatica T-1, 2017/2018 Modulo 2. Prova d Esame 2A di Giovedì 25 Gennaio 2018 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2017/2018 Modulo 2. Prova d Esame 2A di Giovedì 25 Gennaio 2018 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

PRIMA PROVA INTERMEDIA DEL MODULO DI

PRIMA PROVA INTERMEDIA DEL MODULO DI PRIMA PROVA INTERMEDIA DEL MODULO DI MOTIVARE IN MANIERA CHIARA LE SOLUZIONI PROPOSTE A CIASCUNO DEGLI ESERCIZI SVOLTI ESERCIZIO 1 (4 punti) L espressione booleana F = A + B ha un espressione equivalente

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

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

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 5A di Giovedì 9 Luglio 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

Informatica (A-K) 14. Linguaggio C -4

Informatica (A-K) 14. Linguaggio C -4 Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Informatica (A-K) 14. Linguaggio C -4 Strutture Dati tipiche

Dettagli

La Programmazione. Cos è la programmazione? Concetti preliminari

La Programmazione. Cos è la programmazione? Concetti preliminari La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione

Dettagli

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

Fondamenti di Informatica T-1, 2014/2015 Modulo 2. Prova d Esame 1A di Martedì 13 Gennaio 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

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 5 30/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 30/10/018 Esercizi sulle funzioni in C I codici e le soluzioni degli esercizi sono nella cartella parte1 1. Scrivere i prototipi delle seguenti funzioni.

Dettagli

1 (6) 2 (7) 3 (7) 4 (7) 5 (6)

1 (6) 2 (7) 3 (7) 4 (7) 5 (6) CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B anno accademico 010-011 Prof. Danilo ARDAGNA Seconda Prova in Itinere 7.06.011 Durata 1h 30 Valutazioni 1 (6) (7) 3 (7) 4 (7)

Dettagli

FUNZIONI che operano su LISTE e TEMI d ESAME

FUNZIONI che operano su LISTE e TEMI d ESAME D O D I C E S I M A ESERCITAZIONE 2006/ L. MANDELLI FUNZIONI che operano su LISTE e TEMI d ESAME ------------------calcola la somma degli elementi in posizione pari di una lista Si assuma che il primo

Dettagli

I Dati Strutturati ed il Linguaggio C

I Dati Strutturati ed il Linguaggio C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Dati Strutturati Esigenze Vettori

Dettagli

5. Quinta esercitazione autoguidata: liste semplici

5. Quinta esercitazione autoguidata: liste semplici 22 5. Quinta esercitazione autoguidata: liste semplici 5.1. Liste rappresentate mediante strutture e puntatori (LISTE1.C, LISTE2.C) Scrivere un programma che - costruisce una lista di k interi (con k letto

Dettagli

Università degli Studi di Ferrara

Università degli Studi di Ferrara Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 10 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Abbiamo

Dettagli

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL

giapresente( ) leggi( ) char * strstr(char * cs, char * ct) NULL Materiale di ausilio utilizzabile durante l appello: tutto il materiale è a disposizione, inclusi libri, lucidi, appunti, esercizi svolti e siti Web ad accesso consentito in Lab06. L utilizzo di meorie

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

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

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

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili

Dettagli

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica ed Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://people.unica.it/gianlucamarcialis A.A. 2018/2019 Docente: Gian Luca Marcialis

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso

Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso Fondamenti di informatica T-1 (A K) Esercitazione 4: controllo del flusso AA 2018/2019 Tutor: Lorenzo Rosa lorenzo.rosa@unibo.it 2 Esercitazione 4 Introduzione al calcolatore e Java Linguaggio Java, basi

Dettagli

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4

Dettagli

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione (Laurea triennale in matematica) Lezione 26 Sommario: Gestione dei file in C. File ad accesso sequenziale: apertura, chiusura, lettura e scrittura. File binari. Gestione files

Dettagli

Lezione 6 programmazione in Java

Lezione 6 programmazione in Java Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi

Dettagli

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2)

ADT LISTA: altre operazioni non primitive ADT LISTA COSTRUZIONE ADT LISTA COSTRUZIONE ADT LISTA (2) ADT LISTA Pochi Linguaggi forniscono tipo lista fra predefiniti (LISP, Prolog); per gli altri, ADT lista si costruisce a partire da altre strutture dati (in C tipicamente vettori o puntatori) OPERAZIONI

Dettagli

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 3A di Venerdì 12 Febbraio 2016 tempo a disposizione 2h

Fondamenti di Informatica T-1, 2015/2016 Modulo 2. Prova d Esame 3A di Venerdì 12 Febbraio 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

Fondamenti di Informatica II

Fondamenti di Informatica II Università degli studi di Messina Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica e delle Telecomunicazioni Fondamenti di Informatica II Tipi di dati astratti(adt)- seconda parte Coda Struttura

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Esercizio 1 Liste: calcolo perimetro di un poligono

Esercizio 1 Liste: calcolo perimetro di un poligono Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 12 Esercitazione: 28 gennaio 2005 Esercizi su liste, ricorsione, file. Scaletta Esercizio 1 Liste: calcolo perimetro di

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari

Input/Output. Lettura e scrittura Caratteri e Stringhe: Terminale e file. Input/output. caratteri stringhe formattato ascii binari Input/Output Lettura e scrittura Caratteri e Stringhe: Terminale e file Input/output console file caratteri stringhe formattato ascii binari Linguaggio ANSI C Input/Output - 1 La libreria standard del

Dettagli