PDA

Visualizza la versione completa : [***] Calcolo di alfa ^ beta


^NeXsUs^
04-01-2006, 11:03
ragaz ... ho 1 problema

per fare alfa ^ beta

sto qua lo pseudo - codice

alfa
beta
contatore = 1
ris = 1

finch (contatore <= beta ) {

ris = ris*alfa
i = i + 1

}

stampa risultato

-------------------------------


se non fosse disponibile la moltiplica e potessi usare solo somme e sottrazioni ( visto che sono in assembler :D )

come si fa [pseudocodice intendo ] ?


grazie ciaoooo :ciauz:

Visionario
04-01-2006, 15:16
se la moltiplicazione non altro che una somma ripetuta pi volte allora il tutto si traduce in questo :

for i = 1 to alfa
ris = ris + numero
next

il mio codice non fa altro che sostituire questo :

ris = ris*alfa

e non fa altro che ripetere alfa volte la somma.

FelixR
04-01-2006, 18:06
in assembly non esiste la molitplicazione? su che architettura sei?
Ah, ricordati che se la base 2 puoi fare tutto con gli shift. :ciauz:

^NeXsUs^
05-01-2006, 13:22
l'assembler fatto dal mio prof ( sto studiando infoA ) ed fatto in java , 1 assembler semplificato e non ha la moltiplica :\

cmq ---

for i = 1 to alfa
ris = ris + numero
next

non riesco a capirlo x

se fosse

alfa ^ beta ---> mettiamo sia 2^3

sarebbe

per i = 1 to 2
ris = ris + NUMERO <-- ( ? KE NUMERO ? beta ? non va bene
alfa nemmeno )
next

in definitiva a meno che non mi mostri 1 esempio in cui funziona , mi pare che l'algoritmo sia errato :D

a meno che ... non sia io ubriaco :D

grazie :ciauz:

Andrea1979
05-01-2006, 15:46
e cos?



int ris = 1;
for (int j=1; j <= esp; j++) {
int temp = 0;
for (int i=1; i <= base; i++) {
temp = temp+ris;
}
ris = temp;
}


pi che pseudo-codice, proprio in java... sono ancora stordito dalle feste, per cui non garantisco.

Visionario
05-01-2006, 16:10
Sembra funzionare cmq il mio codice non doveva essere usato cos come l'ho scritto ma sempre all'interno della tua struttura ( in fatti il mio blocco andava nel tuo cilco inquanto sostituiva solo la tua operazione ris = ris*alfa ) , anche se ho notato che per alcune operazioni funzionava (es 2^2 o 3^3) per altre no.

^NeXsUs^
08-01-2006, 10:52
int ris = 1;
for (int j=1; j <= esp; j++) {
int temp = 0;
for (int i=1; i <= base; i++) {
temp = temp+ris;
}
ris = temp;
}

con 2 ^3 il ciclo esegue

il ciclo fa: 2 + 4 + 8 = 14 :( ----- 2 ^ 3= 8 :D :D :D

Andrea1979
08-01-2006, 11:00
Non so da dove hai tirato fuori quei numeri... :fagiano:



public class pot {

public static int potenza(int base, int esp) {
int ris = 1;
for (int j=1; j <= esp; j++) {
int temp = 0;
for (int i=1; i <= base; i++) {
temp = temp+ris;
}
ris = temp;
}
return ris;
}

public static void main (String[] args) {
System.out.println("2 elevato a 3 = "+potenza(2,3));
System.out.println("3 elevato a 2 = "+potenza(3,2));
System.out.println("3 elevato a 4 = "+potenza(3,4));
}
}

Visionario
08-01-2006, 12:16
Ho codificato l'algoritmo di Andrea in Asp (VbScript):


Function Pot(base,esp)
ris = 1
for j = 1 to esp
temp = 0
for i = 1 to base
temp = temp + ris
next
ris = temp
next
Pot = ris
End Function


response.write Pot(2,3)


e effettivamente funziona, infatti il risultato restituito dalla sua funzione per 2^3 a me d 8.
ho provato anche con altre coppie di numeri funziona sempre.
Saluti.

^NeXsUs^
08-01-2006, 14:44
:D lo ho fatto su carta e devo aver sbagliato :D :D

metti in + ke java lo inizio nel prossimo trimestre .. info B

:D grazie mille cmq ---- :ciauz:

Loading