Testo dell'esercizio
dato un file contenente nomi ed eta, caricare i dati in una tabella ed effettuare le seguenti operazioni :
minimo
masismo
media
ricerca di nomi corrispondenti ad un eta
ricerca dell'eta di un nome
ordinamento
ricerca direttamente da file
mostra soluzione
015 | $f = fopen ( $f_name , "r" ) or die ( "il file non e` stato aperto\n" ); |
018 | fscanf ( $f , "%s %d" , $tab [0][ $n ], $tab [1][ $n ]); |
026 | print "0) esci\n1) minimo\n2) massimo\n3) media\n4) nomi corrispondenti ad un eta`\n5) ricerca\n6) ordinamento\n7) ricerca direttamente nel file\nscelta : " ; |
027 | fscanf (STDIN, "%d" , $scelta ); |
032 | print minimo( $tab [1], $n ). "\n" ; |
035 | print massimo( $tab [1], $n ). "\n" ; |
038 | print media( $tab [1], $n ). "\n" ; |
041 | print "quale eta : " ; |
042 | fscanf (STDIN, "%d" , $etap ); |
043 | eton( $tab [0], $tab [1], $etap , $n ); |
047 | fscanf (STDIN, "%s" , $nome ); |
048 | ricerca( $tab [0], $nome , $tab [1], $n ); |
051 | $ordinato = ordina( $tab [0], $n ); |
053 | print $tab [0][ $ordinato [ $i ]]. " - " . $tab [1][ $ordinato [ $i ]]. "\n" ; |
057 | fscanf (STDIN, "%s" , $nome ); |
058 | cerca_f( $f_name , $nome ); |
061 | print "opzione non valida\n" ; |
066 | function minimo( $vet , $n ){ |
072 | if ( $vet [ $i ]< $vet [ $pos ]) |
079 | function massimo( $vet , $n ){ |
085 | if ( $vet [ $i ]> $vet [ $pos ]) |
092 | function media( $vet , $n ){ |
103 | function eton( $nomi , $eta , $etap , $n ){ |
111 | print $nomi [ $i ]. "\n" ; |
114 | print "non c'e` nessuno che ha " . $etap . " anni\n" ; |
117 | function ricerca( $vet , $str , $eta , $n ){ |
123 | while ( $i < $n && ! $flag ) |
131 | print $str . " ha " . $eta [ $i ]. " anni\n" ; |
133 | print $str . " non è presente`\n" ; |
136 | function ordina( $vet , $n ){ |
142 | for ( $i =0; $i < $n -1; $i ++) |
143 | if ( $vet [ $ordinato [ $i ]]> $vet [ $ordinato [ $i +1]]){ |
144 | $aux = $ordinato [ $i ]; |
145 | $ordinato [ $i ] = $ordinato [ $i +1]; |
146 | $ordinato [ $i +1] = $aux ; |
155 | function cerca_f( $file_name , $nome ){ |
160 | $f = fopen ( $file_name , "r" ); |
161 | while (! feof ( $f ) && ! $flag ){ |
162 | fscanf ( $f , $nome . " %d" , $eta ); |
167 | print $nome . " ha " . $eta . " anni\n" ; |
169 | print $nome . " non trovato\n" ; |
torna