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