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.

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

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

anonymous_be1147
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?

anonymous_be1147
"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.