Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio17:esercitazionib:esercitazione3

Questa è una vecchia versione del documento!


Esercitazione 3

Esercizio 1

Scrivere una funzione macro 'CHECK_PTR' che prende due argomenti, un puntatore ed una stringa, e stampa utilizzando perror la stringa passata come argomento prima di uscire dal programma con EXIT_FAILURE. Esempio di utilizzo:

 FILE *fp;
 CHECK_PTR(fp=fopen("fileprova.txt", "r"), opening fileprova.txt);

NOTA: per il secondo argomento della macro non ci sono le virgolette!

Se il file 'fileprova.txt' non esiste il risultato sarà:

opening fileprova.txt: No such file or directory

Stampare il valore di ritorno di un programma che testa la macro 'CHECK_PTR' sia in caso di successo che di fallimento. Ricordare che il valore di ritorno dell'ultimo comando bash eseguito si può stampare accedendo alla variabile di ambiente bash ? nel modo seguente echo $?..

Esercizio 2

Dato il seguente codice main C:

#define dimN 16
#define dimM  8
int main() {
    long *M = malloc(dimN*dimM*sizeof(long));
    CHECK_PTR(M, "malloc"); 
    for(size_t i=0;i<dimN;++i)
	for(size_t j=0;j<dimM;++j)			
	    ELEM(M,i,j) = i+j;    
    
    PRINTMAT(M);
    return 0;
}

scrivere le 3 macros CHECK_PTR, ELEM e PRINTMAT. Al suo interno PRINTMAT usa la macro ELEM per accedere agli elementi della matrice. Esempio di output richiesto:

Stampo la matrice M:
   0    1    2    3    4    5    6    7 
   1    2    3    4    5    6    7    8 
   2    3 ....
informatica/sol/laboratorio17/esercitazionib/esercitazione3.1488701371.txt.gz · Ultima modifica: 05/03/2017 alle 08:09 (8 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki