Chi mi aiuta in php???
        Creare una funzione che può ricevere da uno a 3 parametri :
se ne riceve 1 ne calcola il quadrato , se ne riceve 2 calcola del primo il quadrato ,
del secondo la radice quadrata , se ne riceve 3 ne calcola del primo il quadrato ,
del secondo la radice quadrata , del terzo il logaritmo naturale dopo aver verificato che sono dei numeri.
raga per favore aiutatemi
    se ne riceve 1 ne calcola il quadrato , se ne riceve 2 calcola del primo il quadrato ,
del secondo la radice quadrata , se ne riceve 3 ne calcola del primo il quadrato ,
del secondo la radice quadrata , del terzo il logaritmo naturale dopo aver verificato che sono dei numeri.
raga per favore aiutatemi
Risposte
                            
                
    
            E' una cosa del genere:
Puoi modificarla in piu' modi, chiaramente. Ah, sqrt e ln non penso siano esattamente cosi' in Php.
        
f(a, b = 0, c = 0){
   a =  a*a;
if (b && !c){
   a = a*a;
   b = sqrt(b);}
else if (b && c){
   b = sqrt(b);
   c = ln(c);}
}Puoi modificarla in piu' modi, chiaramente. Ah, sqrt e ln non penso siano esattamente cosi' in Php.
            Si potrebbe anche implementare così (supponendo che la funzione debba restituire un array con i valori calcolati):
Se invece, ti interessa solo la stampa, basta togliere l'ampersand che precede il nome della funzione, il commento /* */ e restituire true nell'ultima riga. Volendo si potrebbero anche sostituire i tre if con uno switch()...
        
<?php
function &calcola ()
{
	\$numargs = func_num_args();
	\$args_list = func_get_args();
	\$ans = array();
	\$ndx = 0;
	if (\$numargs > 0 && is_numeric(\$args_list[0]))
		\$ans[\$ndx++] = pow(\$args_list[0], 2);
	// verifica anche che il radicando sia positivo o nullo
	if (\$numargs > 1 && is_numeric(\$args_list[1]) && \$args_list[1] >= 0)
		\$ans[\$ndx++] =  sqrt(\$args_list[1]);
	// verifica anche che l'argomento del logaritmo sia positivo
	if (\$numargs > 2 && is_numeric(\$args_list[2]) && \$args_list[2] > 0)
		\$ans[\$ndx] = log(\$args_list[2]);
	/*
	for (\$i = 0; \$i <= \$ndx; \$i++)
		echo "\$ans[\$i] ";
	echo "\n";
	*/
	return \$ans;
}
?>
Se invece, ti interessa solo la stampa, basta togliere l'ampersand che precede il nome della funzione, il commento /* */ e restituire true nell'ultima riga. Volendo si potrebbero anche sostituire i tre if con uno switch()...
"anonymous_be1147":
Si potrebbe anche implementare così (supponendo che la funzione debba restituire un array con i valori calcolati):
<?php function &calcola () { \$numargs = func_num_args(); \$args_list = func_get_args(); \$ans = array(); \$ndx = 0; if (\$numargs > 0 && is_numeric(\$args_list[0])) \$ans[\$ndx++] = pow(\$args_list[0], 2); // verifica anche che il radicando sia positivo o nullo if (\$numargs > 1 && is_numeric(\$args_list[1]) && \$args_list[1] >= 0) \$ans[\$ndx++] = sqrt(\$args_list[1]); // verifica anche che l'argomento del logaritmo sia positivo if (\$numargs > 2 && is_numeric(\$args_list[2]) && \$args_list[2] > 0) \$ans[\$ndx] = log(\$args_list[2]); /* for (\$i = 0; \$i <= \$ndx; \$i++) echo "\$ans[\$i] "; echo "\n"; */ return \$ans; } ?>
Se invece, ti interessa solo la stampa, basta togliere l'ampersand che precede il nome della funzione, il commento /* */ e restituire true nell'ultima riga. Volendo si potrebbero anche sostituire i tre if con uno switch()...
ma funziona??
            Penso di sì. Comunque puoi verificare tu stesso entrambe le versioni (salvate in un file) con il comando php nome_file.php
[*:3o3ne2kk] versione 2 (solo stampa valori calcolati)
        [*:3o3ne2kk]versione 1 (con array di ritorno)
<?php
function &calcola ()
{
	\$numargs = func_num_args();
	\$args_list = func_get_args();
	\$ans = array();
	\$ndx = 0;
	if (\$numargs > 0 && is_numeric(\$args_list[0]))
		\$ans[\$ndx++] = pow(\$args_list[0], 2);
	// verifica anche che il radicando sia positivo o nullo
	if (\$numargs > 1 && is_numeric(\$args_list[1]) && \$args_list[1] >= 0)
		\$ans[\$ndx++] =  sqrt(\$args_list[1]);
	// verifica anche che l'argomento del logaritmo sia positivo
	if (\$numargs > 2 && is_numeric(\$args_list[2]) && \$args_list[2] > 0)
		\$ans[\$ndx++] = log(\$args_list[2]);
	return \$ans;
}
function stampa(\$ans) {
        \$ndx = count(\$ans);
	for (\$i = 0; \$i < \$ndx; \$i++)
		echo "\$ans[\$i] ";
	echo "\n";
}
\$a = calcola(7); // output atteso: 49
stampa(\$a);
\$a = calcola(6, 49); // output atteso: 36 7
stampa(\$a);
\$a = calcola(4, 81, exp(pi())); // output atteso: 16 9 3.1415...
stampa(\$a);
\$a = calcola("NaN"); // nessun output atteso
stampa(\$a);
\$a = calcola("NaN", "NaN"); // nessun output atteso
stampa(\$a);
\$a = calcola("NaN", "NaN", "NaN"); // nessun output atteso
stampa(\$a);
\$a = calcola(3, "NaN", exp(1)); // output atteso: 9 1
stampa(\$a);
\$a = calcola(5, -1, -56); // output atteso: 5
stampa(\$a);
\$a = calcola("NaN", 64, 0); // output atteso 8
stampa(\$a);
\$a = calcola("NaN", 121, exp(3)); // output atteso 11 3
stampa(\$a);
\$a = calcola(9, 4, "NaN"); // output atteso 81 2
stampa(\$a);
?>
[/*:m:3o3ne2kk][*:3o3ne2kk] versione 2 (solo stampa valori calcolati)
<?php
function calcola ()
{
	\$numargs = func_num_args();
	\$args_list = func_get_args();
	\$ans = array();
	\$ndx = 0;
	if (\$numargs > 0 && is_numeric(\$args_list[0]))
		\$ans[\$ndx++] = pow(\$args_list[0], 2);
	// verifica anche che il radicando sia positivo o nullo
	if (\$numargs > 1 && is_numeric(\$args_list[1]) && \$args_list[1] >= 0)
		\$ans[\$ndx++] =  sqrt(\$args_list[1]);
	// verifica anche che l'argomento del logaritmo sia positivo
	if (\$numargs > 2 && is_numeric(\$args_list[2]) && \$args_list[2] > 0)
		\$ans[\$ndx++] = log(\$args_list[2]);
	for (\$i = 0; \$i < \$ndx; \$i++)
		echo "\$ans[\$i] ";
	echo "\n";
	
	return true;
}
calcola(7); // output: 49
calcola(6, 49); // output: 36 7
calcola(4, 81, exp(pi())); // output: 16 9 3.1415...
calcola("NaN"); // nessun output
calcola("NaN", "NaN"); // nessun output
calcola("NaN", "NaN", "NaN"); // nessun output
calcola(3, "NaN", exp(1)); // output: 9 1
calcola(5, -1, -56); // output: 5
calcola("NaN", 64, 0); // output 8
calcola("NaN", 121, exp(3)); // output 11 3
calcola(9, 4, "NaN"); // output 81 2
?>
[/*:m:3o3ne2kk][/list:u:3o3ne2kk]
        
            ma come faccio a verificare il risultato del programma?
        
        
            sono riuscito a visualizzare i risultati....ma è tutto li il programma?
        
        "tony883":
ma è tutto li il programma?
E\` anche più di quello che hai chiesto, dovresti togliere i test e la funzione stampa().

"tony883":
Creare una funzione che può ricevere da uno a 3 parametri
 
             
                