logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » quarta superiore » php

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

001<?php
002/*
003CLAUDIO CARDINALE 4AI
004dato un file contenente nomi ed eta, caricare i dati in una tabella ed effettuare le seguenti operazioni :
005minimo
006masismo
007media
008ricerca di nomi corrispondenti ad un eta
009ricerca dell'eta di un nome
010ordinamento
011ricerca direttamente da file
012*/
013//acquisizione dei dati
014$f_name = "persone";
015$f = fopen($f_name,"r") or die("il file non e` stato aperto\n");
016$n = 0;
017while(!feof($f)){
018    fscanf($f,"%s %d",$tab[0][$n], $tab[1][$n]);
019    $n++;
020}
021fclose($f);
022$n--;
023     
024//scelta
025do{
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);
028    switch($scelta){
029        case 0:
030            break;
031        case 1:
032            print minimo($tab[1],$n)."\n";
033            break;
034        case 2:
035            print massimo($tab[1],$n)."\n";
036            break;
037        case 3:
038            print media($tab[1],$n)."\n";
039            break;
040        case 4:
041            print "quale eta : ";
042            fscanf (STDIN,"%d",$etap);
043            eton($tab[0], $tab[1], $etap, $n);
044            break;
045        case 5:
046            print "quale nome ";
047            fscanf(STDIN,"%s",$nome);
048            ricerca($tab[0], $nome, $tab[1], $n);
049            break;
050        case 6:
051            $ordinato = ordina($tab[0],$n);
052            for($i=0;$i<$n;$i++)
053                print $tab[0][$ordinato[$i]]." - ".$tab[1][$ordinato[$i]]."\n";
054            break;
055        case 7:
056            print "quale nome ";
057            fscanf(STDIN,"%s",$nome);
058            cerca_f($f_name, $nome);
059            break;
060        default:
061            print "opzione non valida\n";
062                 
063    }
064}while($scelta);
065 
066function minimo($vet, $n){
067    //inizializzazioni
068    $pos = 0;
069     
070    //calcoli
071    for($i=1;$i<$n;$i++)
072        if($vet[$i]<$vet[$pos])
073            $pos = $i;
074     
075    //ritorno
076    return $vet[$pos];
077}
078 
079function massimo($vet, $n){
080    //inizializzazioni
081    $pos = 0;
082     
083    //calcoli
084    for($i=1;$i<$n;$i++)
085        if($vet[$i]>$vet[$pos])
086            $pos = $i;
087     
088    //ritorno
089    return $vet[$pos];
090}
091 
092function media($vet, $n){
093    //inizializzazioni
094    $somma = 0;
095     
096    for($i=0;$i<$n;$i++)
097        $somma += $vet[$i];
098     
099    //ritorno
100    return $somma/$n;
101}
102 
103function eton($nomi, $eta, $etap, $n){
104    //inizializzazioni
105    $flag = 0;
106     
107    //calcoli
108    for($i=0;$i<$n;$i++)
109        if($etap==$eta[$i]){
110            $flag = 1;
111            print $nomi[$i]."\n";
112        }
113    if(!$flag)
114        print "non c'e` nessuno che ha ".$etap." anni\n";
115}
116 
117function ricerca($vet, $str, $eta, $n){
118    //inizializzazioni
119    $i = 0;
120    $flag = 0;
121     
122    //ricerca
123    while($i<$n && !$flag)
124        if($str==$vet[$i])
125            $flag=1;
126        else
127            $i++;
128 
129    //visualizzazione risultati
130    if($flag)
131        print $str." ha ".$eta[$i]." anni\n";
132    else
133        print $str." non è presente`\n";
134}
135 
136function ordina($vet, $n){ 
137    //calcoli
138    for($i=0;$i<$n;$i++)
139        $ordinato[$i] = $i;
140    do{
141        $k = 0;
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;
147                $k = $i+1;
148            }
149        $n=$k;
150    }while($k);
151     
152    return $ordinato;
153}
154 
155function cerca_f($file_name, $nome){
156    //inizializzazioni
157    $flag = 0;
158     
159    //calcoli
160    $f = fopen($file_name, "r");
161    while(!feof($f) && !$flag){
162        fscanf($f, $nome." %d", $eta);
163        if($eta != "")
164            $flag = 1;
165    }
166    if($flag)
167        print $nome." ha ".$eta." anni\n";
168    else
169        print $nome." non trovato\n";
170    fclose($f);
171}

torna



Copyright © 2004-2025 thecsea.it (Claudio Cardinale - cardi@thecsea.it)! Tutti i diritti riservati. - contattaci