Chi mi aiuta in php???

tony883
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

Risposte
TomSawyer1
E' una cosa del genere:
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.

Studente Anonimo
Studente Anonimo
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()...

tony883
"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??

Studente Anonimo
Studente Anonimo
Penso di sì. Comunque puoi verificare tu stesso entrambe le versioni (salvate in un file) con il comando php nome_file.php

    [*: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]

tony883
ma come faccio a verificare il risultato del programma?

tony883
sono riuscito a visualizzare i risultati....ma è tutto li il programma?

Studente Anonimo
Studente Anonimo
"tony883":
ma è tutto li il programma?

E\` anche più di quello che hai chiesto, dovresti togliere i test e la funzione stampa(). :D

"tony883":

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

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.