Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio16:esercitazionia:esercitazione4

Esercitazione 4

Macros, libreria standard di IO, Makefile primi script Bash.

Esercizio 1: macro

Dato il seguente codice main C:

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

scrivere le 2 macros 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 ....

Esercizio 2: Makefile minimale

Scrivere un Makefile minimale per compilare l'esercizio precedente. Utilizzare il compilatore g++ ed i flags -g -O3 -Wall. Il Makefile deve avere anche il target “phony” clean.

OPZIONALE (homework): provare a scrivere un Makefile generico in grado di compilare tutti i sorgenti .c che si trovano nella directory del Makefile. Il target phony clean cancella gli eseguibili.

Esercizio 3: matdump testuale

Riscrivere l'Esercizio 2 dell'Assegnamento3 considerando matrici NxM facendo il dump della matrice in un file testuale invece che binario. Scrivere nelle prime due righe del file il numero di righe (N) e di colonne (M), rispettivamente. Ogni riga del file contiene 1 solo valore. Scrivere il Makefile per compilare il programma.

Esercizio 4: script1

Estrarre dal file /etc/passwd la lista di tutti gli utenti della macchina utilizzando il comando cut (vedere man 1 cut). Ordinare alfabeticamente la lista ottenuta utilizzando il comando sort (vedere man 1 sort).
NB: fare attenzione al seguente messaggio di warning contenuto nel manuale del comando sort:
“The locale specified by the environment affects sort order. Set LC_ALL=C to get the traditional sort order that uses native byte values.”

Esercizio 5: script2

Scrivere uno script Bash che genera N numeri casuali compresi tra 0 ed M. N ed M sono due argomenti dello script (M è minore di 32767). Per generare numeri casuali, utilizzare la funzione $RANDOM:
$RANDOM è una funzione interna di Bash che restituisce un intero pseudocasuale nell'intervallo 0 - 32767.

informatica/sol/laboratorio16/esercitazionia/esercitazione4.txt · Ultima modifica: 16/03/2016 alle 15:56 (7 anni fa) da Massimo Torquati