Esame 5 febbraio 2009, testo n.3 Parte di Unix 1) eseguire le seguenti operazioni binario : 11011101 + 11110011 = 111010000 ottale : 3226617 + 7043455 = 12272274 esadecimale : 1FEE30 + B3B2B1 = B3A0E1 2) fare uno script che esamini il file /proc/cpuinfo e ne estragga la frequenza di clock del processore. Questa frequenza viene chiamata, in questo file, cpu MHz. Se la frequenza di clock e' maggiore di 1000 MHz, si mandi un mail di notifica all'utente studente #!/bin/tcsh set info = ( `grep "cpu MHz" /proc/cpuinfo | tr . " "` ) if ( $info[4] > 1000) then echo la frequenza del clock e\' maggiore di 1000 MHz | mail studente endif 3) fare uno script che controlli se il numero di files contenuti nella home directory ed in tutte le sottodirectories sia inferiore a 500 e se si', creare il file (vuoto) pippo nella home directory. #!/bin/tcsh set nfiles = `find /home/studente | wc` if ( $nfiles < 500 ) touch /home/studente/pippo Parte di Perl 4) scrivere uno script che accetti in input da tastiera un numero arbitrario di linee del tipo : nome cognome votazione contenenti il risultato degli esami di informatica del passato. Ad esempio : Mario Rossi 30 Giovanni Bianchi 28 ....... eccetera. (il numero di spazi bianchi tra i 3 campi sia variabile i modo arbitrario). Con queste informazioni eseguire le seguenti operazioni : a) si stampi a terminale la media aritmetica delle votazioni b) si stampi a terminale il nome, cognome, il risultato delle votazioni mettendoli in ordine alfabetico. A questo proposito si faccia uso di una hash table. #!/bin/usr/perl @lista = ; chomp @lista; foreach ( @lista){ @info = split ; $hash{"$info[0] $info[1]"} = $info[2]; } # calcolo la media $n=0; foreach ( keys %hash){ $media += $hash{$_}; $n++; } $media /= $n; print "La media delle votazioni e' $media\n"; foreach ( sort keys %hash){ print "$_ ha preso $hash{$_}\n"; }