ESERCIZIO 1 (WHILE) |
Costruire una breve applicazione che legge da un form un numero N e ne restituisca la sua fattorizzazione. Esempio 18=2*3*3
Numero:
N |
<form name=dati
action=while1.php method=POST> <input type=text size=4 maxlength=4 NAME=N> N<br> <input type=submit value="Fattorizza N"> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php $Corretto=MS_IsInt($_POST["N"]); if ($Corretto) $N=$_POST["N"]; else die("<H1>N deve essere un numero intero</H1>"); $tmp_N=abs($N); $d=2; $fatt=""; while ($tmp_N>=$d) if (($tmp_N % $d)==0) { $fatt=$fatt . ($fatt=="" ? "" : "*") . $d; $tmp_N=$tmp_N / $d; } else d++; if ($fatt=="") echo $N . "=1"; else echo $N . "=" . ($N<0 ? "-" : "") . $fatt; function MS_IsInt($x) { return ( is_numeric($x ) ? intval(0+$x )==$x : false ); } ?> |
ESERCIZIO 2 (WHILE) |
Costruire una pagina HTML che legga due numeri X e Y e restituisca il minimo comune multiplo tra i due. (suggerimento: il mcm è pari al prodotto dei numeri primi presenti in entrambe le fattorizzazioni di x e di y)
Numeri:
X
Y |
<form name=dati action=while2.asp/php method=POST> <input type=text name=X size=4 maxlength=4> X <input type=text name=Y size=4 maxlength=4> Y<br> <input type=submit value="Calcola il minimo comune multiplo tra X e Y"></form> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php $Corretto=MS_IsIntPos($_POST["X"]); $Corretto=$Corretto && MS_IsIntPos($_POST["Y"]); if ($Corretto) { $X=$_POST["X"]; $Y=$_POST["Y"]; } else die("<H1>X e Y devono essere interi positivi</H1>"); $tmp_X=$X; $tmp_Y=$Y; $mcm=1; $d=2; while ( ($d<=$tmp_X) || ($d<=$tmp_Y) ) if ( (($tmp_Y % $d)==0) || (($tmp_X % $d)==0) ) { if ( ($tmp_Y % $d)==0 ) $tmp_Y=$tmp_Y / $d; if ( ($tmp_X % $d)==0 ) $tmp_X=$tmp_X / $d; $mcm=$mcm*$d; } else $d++; echo "Il minimo comune multiplo tra $X e $Y è: $mcm"; function MS_IsIntPos($x) { $EInt=( is_numeric($x) ? intval(0+$x)==$x : false); if ($EInt) return ($x>0); return false; } ?> |
ESERCIZIO 3 (WHILE) |
Costruire una pagina HTML che legga due numeri X e Y e restituisca il massimo comune divisore tra i due. (suggerimento: il MCD è pari al prodotto dei numeri primi presenti in entrambe le fattorizzazioni di x e di y)
Numero:
X
Y |
<form name=dati action=eser3.asp/php method=POST> <input type=text name=X size=4 maxlength=4> X <input type=text name=Y size=4 maxlength=4> Y<br> <input type=submit value="Calcola il massimo comune divisore tra X e Y"></form> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php $Corretto=MS_IsIntPos($_POST["X"]); $Corretto=$Corretto && MS_IsIntPos($_POST["Y"]); if ($Corretto) { $X=$_POST["X"]; $Y=$_POST["Y"]; } else die("<H1>X e Y devono essere numeri interi</H1>"); $tmp_X=$X; $tmp_Y=$Y; $MCD=1; $d=2; while ( ($d<=$tmp_X) || ($d<=$tmp_Y) ) { if ( (($tmp_Y % $d)==0) && (($tmp_X % $d)==0) ) $MCD=$MCD*$d; if ( ($tmp_Y % $d)==0 ) $tmp_Y=$tmp_Y / $d; if ( ($tmp_X % $d)==0 ) $tmp_X=$tmp_X / $d; if (!( (($tmp_Y % $d)==0) || (($tmp_X % $d)==0) )) $d++; } echo "Il Massimo Comune Divisore tra $X e $Y è: $MCD"; function MS_IsIntPos($x) { $EInt=( is_numeric($x) ? intval(0+$x)==$x : false); if ($EInt) return ($x>0); return false; } ?> |
ESERCIZIO 4 (WHILE) |
Costruire una pagina HTML che legga un numero N e calcoli il numero M per cui vale la relazione: (M-1)! <=N <M! dove M! indica il fattoriale di M ovvero M!=1*2*3*...*(M-1)*M
Numero:
N |
<form name=dati action=eser4.asp/php method=POST> <input type=text name=N size=5 maxlength=5> N<br> <input type=submit value="Calcolo M per cui ho (M-1)!<=N<M!"></form> |
ESERCIZIO 5 (WHILE) |
Costruire una breve applicazione che data una stringa S elimini tutte le ripetizioni dello stesso simbolo consecutive. Esempio se S="AAbbbbbaAAAbbb" dovrà essere visualizzato "AbaAb"
Stringa:
S |
<form name=dati action=eser10.asp/php method=POST> <input type=text name=S size=30 maxlength=90> S<br> <input type=submit value="Elimina le ripetizioni da S"></form> |
ESERCIZIO 6 (WHILE) |
Costruire una breve applicazione che genera una sequenza casuale di numeri compresi tra 0 e 99 (la sequenza termina quando viene generato il numero zero) e restituisca la statistica richiesta.
Statistica:
|
<form name=dati action=eser1.asp/php method=POST> STATISTICA:<select name=Statistica><option value="Min" selected>Minimo<option value="Max">Massimo<option value="Sum">Somma<option value="Avg">Media</select><BR> <input type=submit value="Statistica della sequenza casuale"></form> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php $Statistica=$_POST["STATISTICA"]; $x=rand(0,99); $Minimo=$x; $Massimo=$x; $Somma=0; $Nr=0; while ($x!=0) { if ($Minimo> $x) $Minimo=$x; if ($Massimo< $x) $Massimo=$x; $Somma+=$x; $x=rand(0,99); if ($x>0) $Nr++; } if ($Nr>0) { if ($Statistica=="Min") echo "Il minimo della sequenza è: " . $Minimo; elseif ($Statistica=="Max") echo "Il massimo della sequenza è: " . $Massimo; elseif ($Statistica=="Sum") { $s=number_format($Somma, 0, '', '.'); echo "La somma dei valori della sequenza è: " . $s; } elseif ($Statistica=="Avg") { $s=number_format($Somma/$Nr, 2, ',', '.'); echo "La media della sequenza è: " . $s; } } else echo "Non ho numeri per calcolare la statistica richiesta"; ?> |
ESERCIZIO 7 (WHILE) |
Costruire una breve applicazione che generi una sequenza casuale di numeri compresi tra 0 e 99 (la sequenza termina quando viene generato il numero zero) e la visualizzi con a fianco di ogni numero lo scostamento del singolo valore rispetto alla media di tutti i valori generati.
|
<form name=dati action=eser7.asp/php method=POST> <input type=submit value="Sequenza numeri con a fianco lo scostamento dalla media"></form> |
ESERCIZIO 8 (WHILE) |
Costruire una breve applicazione che generi una sequenza casuale di numeri compresi tra 0 e 99 (la sequenza termina quando viene generato il numero zero) e la visualizzi priva di ripetizioni (ovvero non devono apparire duplicati dello stesso numero) con a fianco il nr. di ripetizioni.
|
<form name=dati action=eser1.asp/php method=POST> <input type=submit value="Sequenza di numeri con scostamento dalla media"></form> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php for ($i=0; $i <=99 ; $i++) $Conto[$i]=0; do { $x=rand(0,99); if ($x!=0) $Conto[$x]++; } while ($x!=0); while (list($numero, $uscite) = each($Conto)) if ($uscite>0) echo "Il numero " . $numero . " è uscito: " . $uscite . "<BR>"; ?> |
ESERCIZIO 9 (WHILE) |
Costruire una breve applicazione che generi una sequenza casuale di numeri compresi tra 0 e 99 (la sequenza termina quando viene il numero zero) e la visualizzi ordinata secondo la richiesta nel form
Ordinamento:
|
<form name=dati
action=while9.asp/php method=POST> Ordinamento: <select name=ORDINAMENTO><option value="C" selected>Crescente<option value="D">Decrescente</select><br> <input type=submit value="Crea una sequenza ordinata di numeri"></form> |
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php $Ordinamento=$_POST["ORDINAMENTO"]; $Nr=1; do { $x=rand(0,99); if ($x!=0) { $Valori[$Nr]=$x; $Nr++; } } while ($x!=0); if ($Ordinamento=="C") sort($Valori); else rsort($Valori); for ($i=1; $i <=$Nr ; $i++) echo $Valori[$i] . "<BR>"; ?> |
ESERCIZIO 10 (WHILE) |
Costruire una breve applicazione che generi una sequenza di valori tra 0 e 100 (terminata con zero). I valori estratti devono essere evidenziati in una tabella 10x10 mediante una colorazione differente rispetto a quelli non estratti.
![]() |
Soluzione PHP | Soluzione ASP |
---|---|---|
<?php for ($r=1; $r <=10 ; $r++) for ($c=1; $c <=10 ; $c++) $tabella[$r][$c]="#FFFFFF"; do { $x=rand(0,100); if ($x!=0) { $c=( ($x % 10)==0 ? 10 : ($x % 10) ); $r=( ($x % 10)==0 ? ($x-($x % 10)) / 10 : ($x-($x % 10)) / 10 + 1 ); $tabella[$r][$c]="#C4E1FF"; } } while ($x!=0); echo "<TABLE BORDER=1 width=300 height=300>"; for ($r=1; $r <=10 ; $r++) { echo "<TR>"; for ($c=1; $c <=10 ; $c++) { $s="<TD BGCOLOR=" . $tabella[$r][$c]; $s=$s . " VALIGN=MIDDLE ALIGN=CENTER>"; $s=$s . ($r-1) . ($c-1) . "</TD>"; echo $s; } echo "</TR>"; } echo "</TABLE>"; ?> |