next_inactive up previous


Esercizi Laboratorio Programmazione

Prof. Stefano Guerrini
Canale P-Z

5 aprile 2002

Gli esercizi dovranno essere inviati entro le 24 di lunedì 08/04/02.


Esercizio 3: conteggio parole e caratteri

Si scrivano le seguenti funzioni

int contaparole(char *, struct contap*);
int contachar(char *, int[256]);
tali che
  1. la contaparole conta le linee, le parole ed i caratteri nel file il cui nome è ricevuto come primo argomento. Il risultato del conteggio è ritornato nella struttura
    struct contap {
        int nl, /* numero linee */
            nw, /* numero parole */
            nc; /* numero caratteri */
    };
    
    passata per riferimento come secondo parametro della funzione.
    NB: Si assume che una parola sia una qualsiasi sequenza di caratteri diversa da uno spazio bianco ' ', '\n' o '\t', racchiusa tra una coppia di spazi bianchi, o tra uno spazio bianco ed il fine file.
  2. La contachar conta le occorrenze di ciascun carattere ch il cui nome è ricevuto come primo argomento. Il numero di caratteri ch nel file è ritornato nella posizione ch del vettore ricevuto come secondo argomento.
  3. Le funzioni ritornano 0 se ci sono problemi nell'apertura/lettura del file, o -1, se il conteggio è eseguito senza problemi.

Il file es3.h (vedi anche appendice A) contiene i prototipi delle suddette funzioni e la definizione di struct contap.

Le due funzioni dovranno essere implementate in un modulo es3.c che verrà poi verificato per mezzo del main in provaes3.c (vedi anche appendice B).

Il modulo es3.c inviato dagli studenti verrà compilato insieme a provaes3.c col comando

    gcc provaes3.c es3.c -o provaes3

Esercizio 4: copia, confronto e concatenazione di files

Si devono scrivere le funzioni

int copiafile(char *, char *);
int compfile(char *, char *);
int concatfile(char *, char *, char *);
tali che
  1. la copiafile copia il contenuto del file il cui nome è ricevuto come primo argomento nel file il cui nome è ricevuto come secondo argomento.
  2. La compfile compara il contenuto dei file i cui nomi sono ricevuti come primo e secondo argomento.
  3. La concatfile concatena il contenuto dei file i cui nomi sono ricevuti come primo e secondo argomento creando un nuovo file il cui nome è ricevuto come terzo argomento.
  4. Le funzioni ritornano 0 se ci sono problemi nell'apertura/lettura/scrittura dei file, o -1, se terminano senza problemi.
  5. Sia la copiafile che la concatfile riscrivono sopra copie eventualmente presenti dei file risultato.

Il file es4.h (vedi anche appendice C) contiene i prototipi delle suddette funzioni.

Le funzioni dovranno essere implementate in un modulo es4.c che verrà poi verificato per mezzo del main in provaes4.c (vedi anche appendice D).

    gcc provaes4.c es4.c -o provaes4


es3.h


/* -*- Mode: C -*- */
/* Time-stamp:  <es3.h 02/04/05 02:02:54 guerrini@sgport.dsi.uniroma1.it> */

struct contap {
    int nl, /* numero linee */
        nw, /* numero parole */
        nc; /* numero caratteri */
};

int contaparole(char *, struct contap *);
/* conta le linee, le parole ed i caratteri in un file:
 *   il primo argomento e' il nome del file
 *   il secondo argomento e' il puntatore alla struttura in cui
 *   memorizzare il risultato
 *   ritorna -1 se tutto ok, o 0 se ci sono errori
 */

int contachar(char *, int[256]);
/* conta le occorrenze di ogni carattere in un file:
 *   il primo argomento e' il nome del file
 *   il secondo argomento e' un vettore puntatore in cui
 *   memorizzare il risultato; per ogni carattere ch, la posizione ch
 *   di tale vettore contiene le occorrenze di ch nel file
 *   ritorna -1 se tutto ok, o 0 se ci sono errori
 */


provaes3.c


/* -*- Mode: C -*- */
/* Time-stamp:  <provaes3.c 02/04/05 02:08:26 guerrini@sgport.dsi.uniroma1.it> */

int main(void) {

/*************************************************************

  Verra' fornito entro lunedi' mattina

 *************************************************************/

}


es4.h


/* -*- Mode: C -*- */
/* Time-stamp:  <es4.h 02/04/05 01:54:03 guerrini@sgport.dsi.uniroma1.it> */

int copiafile(char *, char *);
/* copia un file:
 *   il primo argomento e' il nome del file da copiare
 *   il secondo argomento e' il nome del nuovo file
 *   ritorna -1 se tutto ok, o 0 se ci sono errori
 */

int compfile(char *, char *);
/* compara due file i cui nomi sono ricevuti come argomenti
 *   ritorna -1 se tutto ok, o 0 se ci sono errori
 */

int concatfile(char *, char *, char *);
/* concatena due file: 
 *   il primo e secondo argomento sono i nomi dei file da copiare
 *   il terzo argomento e' il nome del nuovo file
 *   ritorna -1 se tutto ok, o 0 se ci sono errori
 */


provaes4.c


/* -*- Mode: C -*- */
/* Time-stamp:  <provaes4.c 02/04/05 02:08:37 guerrini@sgport.dsi.uniroma1.it> */

int main(void) {

/*************************************************************

  Verra' fornito entro lunedi' mattina

 *************************************************************/

}


next_inactive up previous
Stefano Guerrini 2002-04-05