dato un file contenente nomi ed eta, caricare i dati in una tabella ed effettuare le seguenti operazioni :
<?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);
}