<?php
/*
CLAUDIO CARDINALE 4AI
data una tabella contenente i nomi e l'eta effettuare le seguenti operazioni:
minimo
masismo
media
ricerca di nomi corrispondenti ad un eta
ricerca dell'eta di un nome
ordinamento
*/
//acquisizione dei dati
print "quanti nomi : ";
fscanf(STDIN,"%d",$n);
for($i = 0;$i<$n;$i++){
print "nome : ";
fscanf(STDIN,"%s",$tab[0][$i]);
print "eta : ";
fscanf(STDIN,"%d",$tab[1][$i]);
}
//scelta
do{
print "0) esci\n1) minimo\n2) massimo\n3) media\n4) nomi corrispondenti ad un eta`\n5) ricerca\n6) ordinamento\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;
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;
}