Moltiplicazione tramite somma

  • Creatore Discussione Creatore Discussione antoooo
  • Data di inizio Data di inizio

antoooo

Nuovo Utente
5 Gen 2022
11
0
1
Ciao a tutti, per esercizio devo scrivere la funzione prodotto($a,$b) come addizione ripetuta e successivamente invocare la funzione da script PHP per una serie di coppie di valori. Ho scritto la funzione.

PHP:
<?php
            function prodotto($a,$b)//definisco la funzione prodotto
            {
            if($b==0)
                return $prodotto=0;
            else
                return $prodotto=$a+prodotto($a,$b-1);
            }
            ?>
(è corretta??). Vorrei far stampare a video le addizioni ripetute, ma non so come. Ad esempio, vorrei far stampare a video la seguente moltiplicazione: 2*8 sia come moltiplicazione che come addizione ripetuta 2+2+2+2+2+2+2+2.
Grazie a tutti per l'aiuto :)
 
Ciao mi sembra che il codice che hai scritto non sia corretto,ma dovresti vederlo tu stesso basta testare il codice.
Per quanto riguarda la soluzione devi considerare $a e $b della tua funzione ma in questo modo:
$a come l'elemento che va sommato e $b il numero di volte che va sommato quindi vabene passare $a e $b come parametri alla funzione ma $b lo devi usare per fare un ciclo(ad esempio for) che somma $b volte l'elemento $a.
Spero sia chiara l'idea non ti scrivo il codice perchè sarebbe meglio che provi tu stesso se è un esercizio.
Fammi sapere se riesce, ciao.
 
Ciao, innanzitutto grazie per avermi risposto. Si, è un esercizio, ho utilizzato il costrutto if-else perchè negli esempi delle slide il mio docente ha utilizzato questo per definire una funzione, in ogni caso il codice che ho scritto sopra a me sembra funzionare o_O chissà come??:eek:
Il processo logico l'ho capito solo che non riesco a tradurlo correttamente in codice... Ti faccio presente che sono alle prime armi e sto studiando Fondamenti di informatica per Ingegneria Civile, magari ho conoscenze un pò striminzite.
Mi potresti aiutare a capire come fare? Ho quattro coppie di numeri delle quali devo fare la moltiplicazione tramite somma (metodo delle somme successive). Innanzittutto volevo prima definire la funzione per poi capire come applicarla alle coppie di valori.
Ho provato a riscriverla con i suggerimenti che mi hai dato:
PHP:
<?php
        function prodotto($a,$b)//definisco la funzione prodotto
            {
                $i=0;
                $prodotto=0;
            for($i=1; $i<=$b; $i++)
                return $prodotto=prodotto($a,$b-1)+$a;
            }
        ?>
 
PHP:
<?php
function prodotto($a,$b)//definisco la funzione prodotto 3 x 4= 3+3+3+3
{
    //se il moltiplicatore $b è zero restituisco zero
    if($b==0)
    {
        return $b;
    }
    else
    {
        //imposto la variabile somma ripetuta a zero
        $somma = 0;
        for($i=1; $i<=$b; $i++)
        {
            //sommo $a b volte utilizzando la var di appaggio somma...
            $somma = $a + $somma;
            //concateno gli addendi della somma
            $addendi .= $a."+";
           
           
        }
        //elimino l'ultimo + dalla stampa
        $addendi =  rtrim($addendi, "+ ");
        //aggiungo l'uguale
        $addendi = $addendi." = ";
        //stampo gli addendi
        echo $addendi;
        //restituisco la somma            
        return $somma;
    }
}
$prodotto = prodotto(3,4);
echo $prodotto;

echo "<br><br>";
$prodotto = prodotto(3,0);
echo $prodotto;

echo "<br><br>";
$prodotto = prodotto(8,5);
echo $prodotto;


echo "<br><br>";
$prodotto = prodotto(9,9);
echo $prodotto;
?>

In bocca al lupo per l'esame ,ciao.
 
Ultima modifica:
  • Like
Reactions: antoooo
Ciao illiterate2020, grazie per l'aiuto, è stato illuminante!! Hai nidificato il cilco for in else!! Avevo provato anch'io, ma ho abbandonato l'idea credendo fosse errato:oops: inizio a capirci qualcosina in più.
Ti spiacerebbe spiegarmi questo passaggio:
PHP:
 {
            //sommo $a b volte utilizzando la var di appaggio somma...
            $somma = $a + $somma;
            //concateno gli addendi della somma
            $addendi .= $a."+";
          
          
        }

non si dovrebbe definire la variabile $addendi.=$a."+"; ?? Se si in quale punto del codice?all'inizio del ciclo for è corretto?
un'altra cosa:
$addendi = rtrim($addendi, "+ ");
la funzione rtrim è la prima volta che la incontro, mi potresti dire dove posso trovare una lista di funzioni già definite?
E se avessi voluto definire due array per le coppie di valori, come avrei pouto fare? Sarebbe stato più semplice o complicherei ulteriormente le cose??
Grazie ancora del tuo prezioso aiuto.
 
Codice:
Ciao riguardo la prima riga è quella che si occupa di fare la moltiplicazione come somma ripetuta
infatti allo scorrere del ciclo i volori di $a vengono aggiunti alla variabile somma...quindi è la riga
che fa i calcoli(le somme ripetute)
            //sommo $a b volte utilizzando la var di appaggio somma...
            $somma = $a + $somma;
Riguardo la seconda riga è semplicemente quella che peremette di stampare gli addendi creando una stringa
$addendi che sarebbe ad esempio 3+3+3+3 che ripeto è semplicemente una stringa di testo
            //concateno gli addendi della somma
            $addendi .= $a."+"
Per quanto riguarda le funzioni di php le puoi trovare su php.net che è la documentazione ufficiale di php,
in questo caso secondo me è superfluo usare array ti complichi solo la vita, ciao.
 
  • Like
Reactions: antoooo

Discussioni simili