Exponenten in Berechnungen einbinden

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
AlohaBanane
Beiträge: 8
Registriert: So 16. Okt 2011, 08:42

Exponenten in Berechnungen einbinden

Beitrag von AlohaBanane »

Hey,

wie kann ich Exponenten in FreePascal einbinden? Also z.B. soll mir das Prog berechnen:

Code: Alles auswählen

u := ((3*a)^(2/3))/((2*B)^(1/3));
Also 3a ^ 2/3 geteilt durch 2b ^ 1/3.

Das Zeichen " ^ " funktioniert jedenfalls nicht, da Lazarus immer meckert: "illegal qualifier"

Aber es muss ja möglich sein, Exponenten mit einzubeziehen in eine Rechnung, oder kann Lazarus sowas nicht?

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Exponenten in Berechnungen einbinden

Beitrag von u-boot »

gibt ne funktion namens power ... das wird sein was du suchst.
könnte in der math-unit sein
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Exponenten in Berechnungen einbinden

Beitrag von MAC »

zuerst musst du oben bei uses "math" hinzufügen.

Dann kannst du folgenederweise rechnen:

Code: Alles auswählen

a := 2**3;
// 2 hoch 3
// a = 8
damit sind sogar kommazahlen möglich , also hoch 2,5 oder so...

Code: Alles auswählen

Signatur := nil;

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Exponenten in Berechnungen einbinden

Beitrag von Heinrich Wolf »

Toll! Operator ** gibt's in Turbo Delphi 2006 nicht. Aber was macht da die Unit math spezielles? Ohne math gibt es die Fehlermeldung >Operator is not overloaded: "ShortInt" ** "ShortInt"<, selbst wenn ich folgendes codiere:

Code: Alles auswählen

program Power;
 
{$AppType Console}
 
var a, b : shortint;
 
begin
  a := 2;
  b := 3;
  writeln('2 ** 3 = ', a ** b);
  Readln;
end.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2807
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Exponenten in Berechnungen einbinden

Beitrag von m.fuchs »

Heinrich Wolf hat geschrieben:Aber was macht da die Unit math spezielles?
Sie enthält die Definition und Implemenatation des ** Operators, zum Beispiel für den Datentyp Int64:

Code: Alles auswählen

operator ** (bas,expo : int64) i: int64; inline;
 
(* [...] *)
 
operator ** (bas,expo : int64) i: int64; inline;
  begin
    i:=round(intpower(bas,expo));
  end;
Heinrich Wolf hat geschrieben:Ohne math gibt es die Fehlermeldung >Operator is not overloaded: "ShortInt" ** "ShortInt"[...]
Logisch, die nötige Überladung von ** fehlt ja.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Heinrich Wolf
Beiträge: 323
Registriert: Di 12. Apr 2011, 13:21
OS, Lazarus, FPC: WinXP + VMWare Player mit Fedora14, L 1.1, FPC 2.7.1
CPU-Target: 1core 1,8GHz 32Bit
Wohnort: Fürth
Kontaktdaten:

Re: Exponenten in Berechnungen einbinden

Beitrag von Heinrich Wolf »

OK. Ich hab die Fehlermeldung missverstanden und dachte ShortInt ** ShortInt sei der nicht überladene Operator. Aber was ist nun der nicht überladene Operator ** ?

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Exponenten in Berechnungen einbinden

Beitrag von mschnell »

MAC hat geschrieben:zuerst musst du oben bei uses "math" hinzufügen..
Ich habe das so verstanden, dass er ein Konstante mit einem entsprechenden Wert belegen will. Da nützt auch das Einbinden einer Unit nichts.

-Michael

AlohaBanane
Beiträge: 8
Registriert: So 16. Okt 2011, 08:42

Re: Exponenten in Berechnungen einbinden

Beitrag von AlohaBanane »

Danke für den Tipp mit 2**3 = 2^3. Kann ich denn auch sinus und cosinus, bzw. arcsin und arccos [arctan] berechnen, wenn ich math einbinde? Muss eine etwas kompliziertere Formel benutzen, die ich im Internet gefunden habe. Sieht folgendermaßen aus:

Bild

Müsste die Formel nach h umstellen, da ich die "Höhe" brauche (das kann aber mein superintelligenter Taschenrechner für mich tun - alle anderen Variablen habe ich gegeben). Dann steht da aber immernoch, dass h = irgendwas mit arcsin und arccos zum quadrat und sowas.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Exponenten in Berechnungen einbinden

Beitrag von Socke »

AlohaBanane hat geschrieben:Kann ich denn auch sinus und cosinus, bzw. arcsin und arccos [arctan] berechnen, wenn ich math einbinde?
Ja. Gehe zum Unit-Namen und Klicke mit der linken Maustaste darauf, während du die STRG-Taste gedrückt hältst. Dann siehst du den Quelltext und der Unit und damit auch alle Funktionen, die dort enthalten sind.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: Exponenten in Berechnungen einbinden

Beitrag von Jochen »

und mal in die Dokumentation schauen, das geht meisten schneller als sich durch die Unit zu scrollen. Zudem gibts da oft eine Beschreibung:
http://lazarus-ccr.sourceforge.net/docs ... dex-5.html

Antworten