<?php /* CLAUDIO CARDINALE 4AI 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 */ //acquisizione dei dati $f_name = "persone"; $f = fopen($f_name,"r") or die("il file non e` stato aperto\n"); $n = 0; while(!feof($f)){ fscanf($f,"%s %d",$tab[0][$n], $tab[1][$n]); $n++; } fclose($f); $n--; //scelta do{ 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 : "; fscanf(STDIN,"%d",$scelta); switch($scelta){ case 0: break; case 1: print minimo($tab[1],$n)."\n"; break; case 2: print massimo($tab[1],$n)."\n"; break; case 3: print media($tab[1],$n)."\n"; break; case 4: print "quale eta : "; fscanf (STDIN,"%d",$etap); eton($tab[0], $tab[1], $etap, $n); break; case 5: print "quale nome "; fscanf(STDIN,"%s",$nome); ricerca($tab[0], $nome, $tab[1], $n); break; case 6: $ordinato = ordina($tab[0],$n); for($i=0;$i<$n;$i++) print $tab[0][$ordinato[$i]]." - ".$tab[1][$ordinato[$i]]."\n"; break; case 7: print "quale nome "; fscanf(STDIN,"%s",$nome); cerca_f($f_name, $nome); break; default: print "opzione non valida\n"; } }while($scelta); function minimo($vet, $n){ //inizializzazioni $pos = 0; //calcoli for($i=1;$i<$n;$i++) if($vet[$i]<$vet[$pos]) $pos = $i; //ritorno return $vet[$pos]; } function massimo($vet, $n){ //inizializzazioni $pos = 0; //calcoli for($i=1;$i<$n;$i++) if($vet[$i]>$vet[$pos]) $pos = $i; //ritorno return $vet[$pos]; } function media($vet, $n){ //inizializzazioni $somma = 0; for($i=0;$i<$n;$i++) $somma += $vet[$i]; //ritorno return $somma/$n; } function eton($nomi, $eta, $etap, $n){ //inizializzazioni $flag = 0; //calcoli for($i=0;$i<$n;$i++) if($etap==$eta[$i]){ $flag = 1; print $nomi[$i]."\n"; } if(!$flag) print "non c'e` nessuno che ha ".$etap." anni\n"; } function ricerca($vet, $str, $eta, $n){ //inizializzazioni $i = 0; $flag = 0; //ricerca while($i<$n && !$flag) if($str==$vet[$i]) $flag=1; else $i++; //visualizzazione risultati if($flag) print $str." ha ".$eta[$i]." anni\n"; else print $str." non è presente`\n"; } function ordina($vet, $n){ //calcoli for($i=0;$i<$n;$i++) $ordinato[$i] = $i; do{ $k = 0; for($i=0;$i<$n-1;$i++) if($vet[$ordinato[$i]]>$vet[$ordinato[$i+1]]){ $aux = $ordinato[$i]; $ordinato[$i] = $ordinato[$i+1]; $ordinato[$i+1] = $aux; $k = $i+1; } $n=$k; }while($k); return $ordinato; } function cerca_f($file_name, $nome){ //inizializzazioni $flag = 0; //calcoli $f = fopen($file_name, "r"); while(!feof($f) && !$flag){ fscanf($f, $nome." %d", $eta); if($eta != "") $flag = 1; } if($flag) print $nome." ha ".$eta." anni\n"; else print $nome." non trovato\n"; fclose($f); }