SimenNor Skrevet 4. februar 2004 Rapporter Del Skrevet 4. februar 2004 Jeg burde egentlig kunne dette men hva er egentlig opphøyd. Altså "^" i Delphi. Rart for alt av tan, cos, sin, kvadratrot, ln, arcustan/cos/tan, log+++ var lett å finne ut av, men opphøyd. Jeg burde sikkert ha skjønt det, men nå gjør jeg ikke det. Fint om en kunne bare nevnt det. Driver bare å fikler med ett lite spill som jeg trenger å vite det i. Takker på forhånd Lenke til kommentar
Legion Skrevet 4. februar 2004 Rapporter Del Skrevet 4. februar 2004 IntPower og Power heter funksjonene Lenke til kommentar
SimenNor Skrevet 4. februar 2004 Forfatter Rapporter Del Skrevet 4. februar 2004 Takker Lenke til kommentar
ChrML Skrevet 2. mai 2004 Rapporter Del Skrevet 2. mai 2004 (endret) En ^ brukes både som potenser (5^5 = 25), og noe som sier at en variabel skal behandles som pointer. For eksempel: const lentoread: integer = 10; var s: string; m: tmemorystream; begin //Lage en memorystream m := tmemorystream.create; //Loade en fil vi skal lese en 10 bokstaver lang string fra m.loadfromfile('C:\fil.bin'); //sette den nullte byten i stringen til lengen av det vi skal lese setlength(s,lentoread); //lese 10 bytes inn fra og med andre byte i stringen (det sørger ^ tegnet for) m.ReadBuffer(addr(s[1])^,lentoread); //frigjøre streamen freeandnil(m); //vise teksten vi har lest messagedlg(s); end; Enkelt og greit . Endret 2. mai 2004 av chrml Lenke til kommentar
Knast Skrevet 1. mars 2005 Rapporter Del Skrevet 1. mars 2005 En ^ brukes både som potenser (5^5 = 25), og noe som sier at en variabel skal behandles som pointer. For eksempel: const lentoread: integer = 10; var s: string; m: tmemorystream; begin //Lage en memorystream m := tmemorystream.create; //Loade en fil vi skal lese en 10 bokstaver lang string fra m.loadfromfile('C:\fil.bin'); //sette den nullte byten i stringen til lengen av det vi skal lese setlength(s,lentoread); //lese 10 bytes inn fra og med andre byte i stringen (det sørger ^ tegnet for) m.ReadBuffer(addr(s[1])^,lentoread); //frigjøre streamen freeandnil(m); //vise teksten vi har lest messagedlg(s); end; Enkelt og greit . grovt gammel tråd men allikevel... ^ er som du sier potens (eller eksponenten i en potens)... du gir eksempelet konstant=5 og eksponent=5 (5^5), og sier svaret blir 25.. dette er et enkelt stykke men allikevel feil.. 5^5 = 5*5*5*5*5 = 3125. Ikke 25.. Lenke til kommentar
Format71 Skrevet 1. mars 2005 Rapporter Del Skrevet 1. mars 2005 Uansett kan du ikke bruke ^ for eksponent i pascal... -Vegar Lenke til kommentar
Knast Skrevet 4. mars 2005 Rapporter Del Skrevet 4. mars 2005 (endret) hvordan bruker man eksponent i delphi forresten???? ^ brukes for pointer.. ser det står noe om power og intpower over i tråden men hvordan skriver jeg dette i praksis? "5 power 5" ser ikke riktig ut og virker heller ikke... hvordan???? eksempel kvadratrot: sqrt(inttostr(c^2-b^2))... her har jeg brukt ^ som eksponent tegn men det virker ikke... Delphi syntax: function Ldexp(const X: Extended; const P: Integer): Extended register; fant denne i delphi help.. men hvordan bruker jeg deg.. Endret 4. mars 2005 av lathorv Lenke til kommentar
Legion Skrevet 4. mars 2005 Rapporter Del Skrevet 4. mars 2005 du kan se her: http://delphi.about.com/library/rtl/blrtlPower.htm kanskje ikke verdens mest pedagogiske eksempel i de bruker... litt sånn rett på sak så blir 4^5: Resultat := Power(4,5); Lenke til kommentar
Knast Skrevet 4. mars 2005 Rapporter Del Skrevet 4. mars 2005 (endret) du kan se her:http://delphi.about.com/library/rtl/blrtlPower.htm kanskje ikke verdens mest pedagogiske eksempel i de bruker... litt sånn rett på sak så blir 4^5: Resultat := Power(4,5); undecleared indentifier: power... :S må jeg sette noe først? Endret 4. mars 2005 av lathorv Lenke til kommentar
Knast Skrevet 4. mars 2005 Rapporter Del Skrevet 4. mars 2005 fant det ut... men mangler en ting: jeg må få extended tilbake til integer... skulle bli noe lignende dette: exttoint, men det er det ikke... Lenke til kommentar
gnab Skrevet 6. mars 2005 Rapporter Del Skrevet 6. mars 2005 Bruk ceil-prosedyren; Heltall:= Ceil(Power(2, 5)); Lenke til kommentar
john_h Skrevet 6. mars 2005 Rapporter Del Skrevet 6. mars 2005 Eller Floor... Eller Round... Ceil runder av oppover til nærmeste heltall, Floor runder av nedover til nærmeste heltall, og Round runder av til nærmeste heltall. I akkurat dette tilfellet spiller det liten rolle hvilken som brukes, hvertfall så lenge du bare opphøyer et heltall i et annet heltall. En bitteliten uformell test jeg kjørte viste at Round er den raskeste funksjonen av dem (hvertfall på min P4).. (ikke at du merker noen forskjell på dem med mindre du misbruker de stakkars funksjonene ) Round krever heller ikke at du legger til Math i uses, siden den ligger i System.pas Lenke til kommentar
Format71 Skrevet 7. mars 2005 Rapporter Del Skrevet 7. mars 2005 Eller trunch( ) som rett og slett bare dropper alt av desimaler... -Vegar Lenke til kommentar
john_h Skrevet 8. mars 2005 Rapporter Del Skrevet 8. mars 2005 Visste det var noe jeg hadde glemt, kunne bare ikke huske hva den het Men du fikk nok en ekstra -h på slutten der, Trunc() skal det være.. Den gjør i grunn det samme som Floor(), men du slipper i det minste å legge til Math bare for den funskjonen. Lenke til kommentar
Format71 Skrevet 9. mars 2005 Rapporter Del Skrevet 9. mars 2005 woops... Ja, ja. Skitt au... -Vegar Lenke til kommentar
A!1 Skrevet 3. april 2005 Rapporter Del Skrevet 3. april 2005 (endret) Vet ikke hva du skal med powerfunksjonen, men en generell powerfunksjon som regner ut X^(int y) er rimelig enkel: (kan ikke delphi, så skriver pseudokode) Funksjon Power( desimal x, heltall y ) returnerer desimaltall hvis y < 0 x = 1 / x y = y * -1 hvis y > 0 y = y - 1 returner Power( x, y ) * x ellers returner 1 Avslutt PowerFunksjon Dersom man skal opphøye i et desimaltall, så må man finne en numerisk approksimasjon av funksjonen x^y, hvilket er en mye mer omfattende funksjon som jeg ikke kan ta ut av hodet sånn uten videre... Funksjonen kan også optimeres betydelig ved å lage en tabell: 7^1997 = (7^1024)(7^512)(7^256)(7^128)(7^64)(7^8)(7^4)(7^1) 1997 er binært lik 11111001101 som tilsvarer 2. potensen av x, altså: Som du ser er 7^1997 = (7^(1024*1))(7^(512*1))(7^(256*1))(7^(128*1))(7^(64*1))(7^(32*0))(7^(16*0))*(7^(8*1))(7^(4*1))(7^(2*0))(7^(1*1)) 7^1024 = (7^512)*(7^512) 7^512 = (7^256)*(7^256) 7^256 = (7^128)*(7^128) 7^128 = (7^64)*(7^64) 7^64 = (7^32)*(7^32) 7^32 = (7^16)*(7^16) 7^16 = (7^8)*(7^8) 7^8 = (7^4)*(7^4) 7^4 = (7^2)*(7^2) 7^2 = (7^1)*(7^1) 7^1 = 7 Som du sikkert skjønner så bruker denne optimaliserte funksjonen 11 iterasjoner mens den først nevnte (rett fram funksjonen) 1997*2 iterasjoner på å regne ut 7^1997 og er betydelig mye tregere på store tall, men den er enklere å forstå og skrive. Optimaliseringseksempelet er hentet fra http://mathforum.org/ Håper dette hjelper noen. Endret 3. april 2005 av Mental Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå