dato un file contenente nomi ed eta efettuare le seguenti operazioni direttamente da file :
<?php
/*
CLAUDIO CARDINALE 4AI
dato un file contenente nomi ed eta efettuare le seguenti operazioni direttamente da file :
minimo
masismo
media
ricerca di nomi corrispondenti ad un eta
ricerca dell'eta di un nome
*/
$f_name = "persone";
//scelta
do{
print "0) esci\n1) minimo\n2) massimo\n3) media\n4) nomi corrispondenti ad un eta`\n5) ricerca\nscelta : ";
fscanf(STDIN,"%d",$scelta);
switch($scelta){
case 0:
break;
case 1:
print minimo($f_name)."\n";
break;
case 2:
print massimo($f_name)."\n";
break;
case 3:
print media($f_name)."\n";
break;
case 4:
print "quale eta : ";
fscanf (STDIN,"%d",$etap);
eton($f_name, $etap);
break;
case 5:
print "quale nome ";
fscanf(STDIN,"%s",$nome);
cerca_f($f_name, $nome);
break;
default:
print "opzione non valida\n";
}
}while($scelta);
function minimo($f_name){
//calcoli
$f = fopen($f_name,"r") or die("il file non e` stato aperto\n");
fscanf($f,"%s %d",$nome, $eta);
while(!feof($f)){
fscanf($f,"%s %d",$nome, $eta2);
if($eta != "" && $eta2 != "" && $eta2<$eta)
$eta = $eta2;
}
fclose($f);
//ritorno
return $eta;
}
function massimo($f_name){
//calcoli
$f = fopen($f_name,"r") or die("il file non e` stato aperto\n");
fscanf($f,"%s %d",$nome, $eta);
while(!feof($f)){
fscanf($f,"%s %d",$nome, $eta2);
if($eta != "" && $eta2 != "" && $eta2>$eta)
$eta = $eta2;
}
fclose($f);
//ritorno
return $eta;
}
function media($f_name){
//inizializzazioni
$somma = 0;
$n = 0;
//calcoli
$f = fopen($f_name,"r") or die("il file non e` stato aperto\n");
while(!feof($f)){
fscanf($f,"%s %d",$nome, $eta);
$somma += $eta;
$n++;
}
fclose($f);
$somma -= $eta;
$n--;
//ritorno
return ($somma/$n);
}
function eton($f_name, $etap){
//inizializzazioni
$flag = 0;
//calcoli
$f = fopen($f_name, "r");
while(!feof($f)){
fscanf($f, "%s %d", $nome, $eta);
if($eta == $etap){
$flag = 1;
print $nome."\n";
}
}
fclose($f);
if(!$flag)
print "non c'e` nessuno che ha ".$etap." anni\n";
}
function cerca_f($file_name, $nome){
$f = fopen($file_name, "r");
$flag = 0;
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);
}