====== 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 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'[[esercitazione3|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.