Lab 10 Gestione file di testo

Documenti analoghi
Lab 15 Gestione file di testo

Esercizio 1. Esercizio 1 - Soluzione

Lab 11 Gestione file di testo"

Fondamenti di Informatica T-1 Modulo 2. Obiettivo di questa esercitazione. File di testo File binari

Esercizio 1. Esercizio 2

Esercizio 1 - Soluzione

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

Esercizio 1. Esercizio - 1

Fondamenti di Informatica T-1 Modulo 2

Esercizio 1 (15 punti)

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Esercizio 1 (15 punti)

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

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

Gestione dei file. Linguaggio ANSI C Input/Output - 13

Esercizio 1: funzione con valore di ritorno di tipo puntatore

Indice. La gestione dei file in C e gli stream. Apertura e chiusura di un file. Operazioni sui file. Accesso sequenziale e non sequenziale

Scrittura formattata - printf

Fondamenti di Informatica T-1 Modulo 2. Obiettivo di questa esercitazione. Files Allocazione dinamica della memoria

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

La gestione dei file in C

Esercizio 1: Puntatori impiegati che sono manager

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Introduzione al C. Stream e disk file

Relativamente agli esempi sopra riportati, al termine dell esecuzione della funzione il file di uscita dovrà contenere quanto riportato a lato.

Esercizi di programmazione in linguaggio C English Dictionary

Laboratorio di Programmazione: Linguaggio C Lezione 21 del 19 maggio 2014

File binari e file di testo

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Caratteri e stringhe

Gestione dei file. File di testo e binari

Introduzione. L elaborazione dei files in C. Elaborazione dei files (1) Elaborazione dei files (2) D.D. cap. 11+ pp K.P. pp.

Gestione dei file. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

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

Aggregati di dati eterogenei: il tipo struct. Esercizi risolti

I file possono essere manipolati (aperti, letti, scritti ) all interno di programmi C. dischi nastri cd

Lezione 5 Sottoarray di somma massima

int ninv; /* numero di inventario */

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

Gestione dei File in C

Esercizio 1: calcolo insieme intersezione

Es. 1. interi, li stampi a video ponendo prima i numeri pari e poi i numeri dispari. Es. 1. int readlength(file *f, int *even, int *odd)

Fondamenti di Informatica

Lab 10 Passaggio per riferimento

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

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

Fondamenti di Informatica

PROVA SCRITTA 23 MARZO 2010

FONDAMENTI DI INFORMATICA

Corso di Informatica 1 Esercitazione n. 4

ESERCIZIO 1 ESERCIZIO 2

Esercizio 1 Liste: calcolo perimetro di un poligono

DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA SIENA UFF

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

1. Realizzare una funzione int trovaevasori(file * fcatasto, FILE * ftasse, Lotto * dest, int dim)

Introduzione al C. Unità 9 File. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

1. Esercizio tipo per prova pratica

Esercizi. I File ed il C

Ricerca binaria ricorsiva!

file fisico file logico

Gestione dei File. Indice. Il file system in C. Principali operazioni sui file (dalla Standard Library) Esempi. Corso di Informatica A.

File e puntatori a file

Stringhe e allocazione dinamica della memoria

C: panoramica. Violetta Lonati

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

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

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Capitolo 5 -- Stevens

I file. un file è una sorgente/destinazione di dati per diversi attori

I files in C. A cura del prof. Ghezzi

Esercitazione 11. Liste semplici

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

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

Il linguaggio C. Puntatori e dintorni

Un file è un astrazione di memorizzazione di dimensione potenzialmente illimitata (ma non infinita), ad accesso sequenziale.

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

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

Quicksort e qsort() Alessio Orlandi. 28 marzo 2010

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

1. Realizzare una funzione int trovaevasori(file * fcomune, FILE * ftasse, Recapito * dest, int dim)

Lezione 8 Struct e qsort

Gestione dei File. dischi nastri cd

Complessità algoritmi su strutture dati (riassunto)

Esercitazioni di Fondamenti Informatica - Modulo A

Il linguaggio C Strutture

Spazio riservato ai docenti

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

RIGA COLONNA MATRICOLA

Informatica 1. Prova di recupero 15 Febbraio 2005

Linguaggio C Gestione File

Stringhe. In C le stringhe ben formate sono in realtà array di caratteri terminati sempre da un carattere speciale, \0, detto anche

Lezione 6 Selection/Insertion Sort su interi e stringhe

ESAME DI FONDAMENTI DI INFORMATICA I ESAME DI ELEMENTI DI INFORMATICA. 21 Gennaio 1998

FILE BINARI. I file di testo non sono indispensabili: sono semplicemente comodi!

Questa dispensa propone esercizi riepilogativi sui concetti visti finora ovvero: Esercizio 7.1

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

I File. File. File di testo. Esempi di file di testo. Gestione di file in C. Gestione di file in C

Fondamenti di Informatica T-1, 2011/2012 Modulo 2. Prova d Esame 2A di Giovedì 12 Gennaio 2012 tempo a disposizione 2h

Linguaggio C: i file

Transcript:

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Lab 10 Gestione file di testo Lab15 1

Esercizio 1 n 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 le scriva nel file di testo. n Il programma termina quando l utente inserisce la parola fine. Si abbbia cura di chiudere il file prima di terminare definitivamente il programma. n Si controlli il corretto funzionamento del programma accedendo direttamente al file di testo con un editor (ad es. Notepad). Lab15 2

#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { FILE * fp; char s[64]; Esercizio 1 - Soluzione if ((fp=fopen("prova.txt", "w")) == NULL) exit(1); do { scanf("%s", s); if (strcmp("fine", s)!= 0) fprintf(fp, "%s ", s); } while (strcmp("fine", s)!= 0); fclose (fp); } return (0); Lab15 3

Esercizio 2 n Realizzare un modulo tempi.h/tempi.c per la gestione del tempo di giro su un circuito di MotoGP. n Il modulo deve definire (utilizzando la typedef) la struttura Tempo, con i tre campi minuti, secondi, millesimi. n Il modulo deve definire la funzione: int differenza(tempo t1, Tempo t2); Che restituisce (in millesimi) la differenza tra t1 e t2. Lab15 4

Esercizio 2 n Il modulo deve poi definire la funzione: int leggitempi(file* file, Tempo partenza[], Tempo arrivo[]); n Che legge da un file di testo il tempo di partenza e di arrivo di una sequenza di giri e li inserisce nei due array partenza e arrivo. La funzione deve restituire il numero di elementi letti. Si supponga che il file di testo contenga una riga per ogni coppia partenza-arrivo, e che minuti, secondi e millesimi siano separati da spazi o tabulazioni. Si supponga che non vi possano essere più di 100 coppie partenza-arrivo. Si supponga che ogni linea contenga sempre 6 campi (min/sec/mill) per le due misure. Lab15 5

Esercizio 2 n Si scriva un programma che legge dal file di testo tempi.txt una serie di tempi di partenza ed arrivo (quindi, di tempi di giro), mediante la funzione leggitempi. n Il programma stampi poi a video il numero di giri effettuati in un tempo inferiore a quello impiegato per il primo giro. Lab15 6

Esercizio 3 Sia dato il file di testo "dati.txt" contenente i dati relativi agli studenti immatricolati al primo anno della Facoltà di Ingegneria In particolare, le informazioni sono memorizzate nel file "dati.txt" come segue: ognuna delle linee del file contiene i dati relativi ad un nuovo studente; in particolare: 1 Matricola: un intero che indica il numero di matricola dello studente 2 CdL: un intero che indica il corso di laurea (CdL) dello studente (es. 2145) Lab15 7

Esercizio 3 Sia dato un secondo file di testo, indirizzi.txt che contiene, invece, l indirizzo di ogni studente, e in particolare, in ogni linea, separati da uno spazio: Matricola: il numero di matricola dello studente (un intero) Nome: il nome dello studente, al più 20 caratteri senza spazi Cognome: il cognome dello studente, al più 30 caratteri senza spazi Città: una stringa che riporta la città di residenza dello studente, al più 30 caratteri senza spazi Lab15 8

Esercizio 3 Si siluppi il modulo studenti.h/studenti.c, che definisca (mediante typedef) la strutture: - DatiCorso, per contenere le informazioni di dati.txt - DatiIndirizzo, per quelle di indirizzi.txt - DatiStudente, per contenere tutte le informazioni su uno studente. 1. Il modulo deve definire le funzioni: int leggicorsi(file* file, DatiCorso corsi[]); int leggiindirizzi(file* file, DatiIndirizzo indirizzi[]); Per riempire i due vettori dati ed indirizzi da due file di testo (tipo dati.txt ed indirizzi.txt ). Le funzioni restituiscono il numero di elementi letti. Lab15 9

Esercizio 3 Si scriva un programma in linguaggio C che: 1. A partire dai file "dati.txt" e indirizzi.txt costruisca un array T di strutture DatiStudente. Si assuma che non vi siamo mai più di 1000 studenti. 2. A partire dall array T, e dato da input un intero C che rappresenta un CdL, stampi la percentuale di studenti (rispetto al numero totale delle matricole) iscritti al corso C [Ad esempio, se il numero totale delle matricole è 1000, e quello degli studenti iscritti a C è 200, il programma stamperà 20% ] 3. Scriva su un terzo file di testo bologna.txt, nome, cognome e numero di matricola di tutti gli studenti che abitano a Bologna Lab15 10

#include <stdio.h> Movimenti Sullo Stream int fseek(file *stream, long offset, int whence); void rewind(file *stream); La funzione fseek() imposta l'indicatore di posizione del file. La prossima operazione di I/O su stream verra' eseguita dalla nuova posizione impostata. La posizione e' calcolata aggiungendo offset (che puo' assumere anche valori negativi) a whence. whence puo' valere SEEK_SET, SEEK_CUR o SEEK_END per specificare rispettivamente il riferimento dall'inizio file, dalla posizione corrente o dalla fine file. In caso di successo, fseek() ritorna 0 e viene cancellato l'indicatore di fine file. In caso di fallimento ritorna -1. La funzione rewind() imposta l'indicatore di posizione del file puntato da stream all'inizio file. E' equivalente a: (void)fseek(stream, 0L, SEEK_SET) eccetto al fatto che viene resettato anche l'indicatore di errore. Lab15 11

Esercizio 4 Sono dati due file di testo cineprogramma.txt e sale.txt che contengono, rispettivamente, il programma settimanale dei film in proiezione e le descrizioni delle sale in città. Più precisamente, ogni riga di cineprogramma.txt contiene, nell ordine: titolo del film (non più di 30 caratteri senza spazi), uno e un solo spazio di separazione nome della sala (non più di 20 caratteri senza spazi), uno e un solo spazio di separazione 3 orari di inizio proiezione (3 numeri interi separati da caratteri - ), terminatore di riga mentre ogni riga di sale.txt contiene, nell ordine: nome della sala (non più di 20 caratteri senza spazi), uno e un solo spazio di separazione costo del biglietto (numero reale), terminatore di riga Lab15 12

Esercizio 4 cineprogramma.txt: TheKingdom Nosadella 18-20-22 Dogville Fellini 17-20-22 OttoEMezzo Capitol 17-20-23 BreakingWaves Modernissimo 15-19-23 sale.txt: Capitol 6.00 Fellini 5.50 Modernissimo 6.00 Nosadella 6.50 Lab15 13

Esercizio 4 1) Si scriva una procedura load( ) che riceva come parametri di ingresso due puntatori a file di testo e restituisca come parametri di uscita un vettore y contenente strutture film (titolo film, costo biglietto) e il numero degli elementi N inseriti in y. Per semplicità si supponga che tutte le sale contenute nel primo file siano presenti anche nel secondo, e una sola volta. Si supponga che non vi possano essere più di 100 film e 10 sale. Suggerimento: si definiscano strutture e si riempiano array temporanei per raggiungere l obiettivo. Lab15 14

Esercizio 4 2) Si scriva un programma C che, utilizzando la procedura load( ) precedentemente definita, riempia un vettore prezzi (supposto di dimensione massima DIM=100) di strutture film di cui sopra, derivanti dai file cineprogramma.txt e sale.txt Il programma deve poi stampare a terminale tutti gli elementi di prezzi il cui costo del biglietto è inferiore alla media di tutti i costi caricati nel vettore Lab15 15

Esercizio 5 Sono dati due file di testo anagrafe.txt e fatture.txt che contengono, rispettivamente, i dati anagrafici di alcuni clienti e l elenco delle fatture Più precisamente, ogni riga di anagrafe.txt contiene, nell ordine: Codice Cliente (numero intero), uno e un solo spazio di separazione Nome del cliente (non più di 30 caratteri senza spazi), uno e un solo spazio di separazione Città (non più di 20 caratteri senza spazi), uno e un solo spazio di separazione Ogni cliente compare nel file di anagrafe una ed una sola volta Ogni riga di fatture.txt contiene, nell ordine: Codice Cliente (numero intero), uno e un solo spazio di separazione Numero della fattura (numero intero), uno e un solo spazio di separazione Importo della fattura (numero reale), uno e un solo spazio di separazione Un carattere ( p se la fattura è stata pagata, n altrimenti), terminatore di riga Lab15 16

Esercizio 5 anagrafe.txt: 1 Chesani Bologna 2 Bellavista Bologna 3 Mello Bologna fatture.txt: 1 23 54.00 p 1 24 102.00 n 3 25 27.00 p 1 26 88.00 n Lab15 17

Esercizio 5 1) Si scrivano due funzioni leggiclienti( ) e leggifatture( ) che ricevano ciascuna come parametro di ingresso un puntatore a file di testo e che abbiano due parametri di uscita: a) un vettore y di strutture atte a memorizzare (rispettivamente) clienti e fatture lette dal file di testo; b) il numero di elementi letti. Lab15 18

Esercizio 5 2) Si scriva una funzione contadebiti( ) che riceva come parametri di ingresso due array (rispettivamente di strutture Cliente e Fattura), con le relative dimensioni logiche. La funzione deve avere come parametri di uscita un vettore y contenente strutture Debito (nome cliente, importo) e il numero degli elementi N inseriti in y: questo vettore deve contenere solo i dati relativi a fatture non pagate. Lab15 19

Esercizio 5 3) Si scriva un programma C che, utilizzando le funzioni precedentemente definite, riempia un vettore debitori di strutture debito di cui sopra, derivanti dai file anagrafe.txt e fatture.txt. Si supponga non vi siano più di 100 clienti e 1000 fatture. Il programma stampi poi a video il valore del debito per tutti clienti, quindi chieda all utente il nome di un cliente e stampi il numero di fatture (non pagate) intestate a tale cliente. Lab15 20