Discussione:Implementazioni di algoritmi/Elevazione a potenza: differenze tra le versioni

Contenuti della pagina non supportati in altre lingue.
Wikibooks, manuali e libri di testo liberi.
Contenuto cancellato Contenuto aggiunto
Gian BOT (discussione | contributi)
m Bot: sostituisce source con syntaxhighlight
 
Riga 10: Riga 10:
[[Utente:Zambu|Zambu]] 15:54, 2 set 2008 (CEST)
[[Utente:Zambu|Zambu]] 15:54, 2 set 2008 (CEST)
:Per l'implementazione in Pascal (scritta da me) ti posso dire che il controllo per 0<sup>0</sup> viene eseguito:
:Per l'implementazione in Pascal (scritta da me) ti posso dire che il controllo per 0<sup>0</sup> viene eseguito:
<source lang=pascal>
<syntaxhighlight lang=pascal>
if (b=0) and (e=0) then {verifica il caso 0^0}
if (b=0) and (e=0) then {verifica il caso 0^0}
writeln('Errore: l''espressione non ha significato')
writeln('Errore: l''espressione non ha significato')
else
else
...resto del programma...
...resto del programma...
</syntaxhighlight>
</source>
Il problema è che 0<sup>0</sup> non ha significato e la funzione non può restituire un numero; neanche valori come 0 o -1 vanno bene in quanto possono essere ottenuti anche con valori corretti. Quello da fare sarebbe impostare il risultato a false, ma in Pascal se ho dichiarato la funzione come reale non posso restituire un boolean. --[[Utente:Ramac|Ramac]] · [[Discussioni utente:Ramac|«che lungi saetta»]] 16:23, 2 set 2008 (CEST)
Il problema è che 0<sup>0</sup> non ha significato e la funzione non può restituire un numero; neanche valori come 0 o -1 vanno bene in quanto possono essere ottenuti anche con valori corretti. Quello da fare sarebbe impostare il risultato a false, ma in Pascal se ho dichiarato la funzione come reale non posso restituire un boolean. --[[Utente:Ramac|Ramac]] · [[Discussioni utente:Ramac|«che lungi saetta»]] 16:23, 2 set 2008 (CEST)
::Colpa mia :(, scusate, quegli snippet li avevo presi un po in giro da wikipedia e dai miei programmi per projecteuler, quindi non ho badato tanto alla loro correttezza matematica, ma più alla loro efficacia. [[Utente:Link|Link]] 17:20, 2 set 2008 (CEST)
::Colpa mia :(, scusate, quegli snippet li avevo presi un po in giro da wikipedia e dai miei programmi per projecteuler, quindi non ho badato tanto alla loro correttezza matematica, ma più alla loro efficacia. [[Utente:Link|Link]] 17:20, 2 set 2008 (CEST)


::Hai ragione, ormai il Pascal incomincia a sfuggirmi! Però un programma con un'istruzione così:
::Hai ragione, ormai il Pascal incomincia a sfuggirmi! Però un programma con un'istruzione così:
<source lang=pascal>
<syntaxhighlight lang=pascal>
p:=pot(0, 0)
p:=pot(0, 0)
</syntaxhighlight>
</source>
::Penso che si fermi con un errore di runtime. Forse sarebbe meglio trasformare la funzione in una procedura che stampa la potenza. Ciao e scusate la pignoleria. --[[Utente:Zambu|Zambu]] 19:32, 2 set 2008 (CEST)
::Penso che si fermi con un errore di runtime. Forse sarebbe meglio trasformare la funzione in una procedura che stampa la potenza. Ciao e scusate la pignoleria. --[[Utente:Zambu|Zambu]] 19:32, 2 set 2008 (CEST)



Versione attuale delle 16:04, 31 ott 2021

Qualche osservazione[modifica]

La definizione di potenza non è completa, ne propongo una che dovrebbe essere corretta in N.

Le funzioni proposte per il C/C++ non tengono conto del caso .

La funzione Pascal, sempre nel caso , non dà un risultato. È da tanto che non uso Pascal, ma ho qualche dubbio che funzioni correttamente.

Propongo due soluzioni in Python. Nella soluzione ricorsiva ho posto il controllo del caso particolare fuori dalla ricorsione.

Zambu 15:54, 2 set 2008 (CEST)[rispondi]

Per l'implementazione in Pascal (scritta da me) ti posso dire che il controllo per 00 viene eseguito:
        if (b=0) and (e=0) then {verifica il caso 0^0}
                writeln('Errore: l''espressione non ha significato')
        else
                ...resto del programma...

Il problema è che 00 non ha significato e la funzione non può restituire un numero; neanche valori come 0 o -1 vanno bene in quanto possono essere ottenuti anche con valori corretti. Quello da fare sarebbe impostare il risultato a false, ma in Pascal se ho dichiarato la funzione come reale non posso restituire un boolean. --Ramac · «che lungi saetta» 16:23, 2 set 2008 (CEST)[rispondi]

Colpa mia :(, scusate, quegli snippet li avevo presi un po in giro da wikipedia e dai miei programmi per projecteuler, quindi non ho badato tanto alla loro correttezza matematica, ma più alla loro efficacia. Link 17:20, 2 set 2008 (CEST)[rispondi]
Hai ragione, ormai il Pascal incomincia a sfuggirmi! Però un programma con un'istruzione così:
        p:=pot(0, 0)
Penso che si fermi con un errore di runtime. Forse sarebbe meglio trasformare la funzione in una procedura che stampa la potenza. Ciao e scusate la pignoleria. --Zambu 19:32, 2 set 2008 (CEST)[rispondi]
      • Scusate potete implementare il calcolo anche per Excel, comreso quello della Pasqua ?? GRAZIE E MI SCUSO per la modifica

Ettore