![]() |
PI
Heyho Leutz,
Kurze Frage: Wie wird Pi in Delphi deklariert. Gibts da einen Besonderen Befehl oder sowas in der art? MfG Alex |
Re: PI
So viel ich weis ist Pi als Konstante deklariert, und müsste in der Unit Math definiert sein.
|
Re: PI
Vergessen zu erwähnen ich habe keine Unit Math bzw. in meinem Informatik Kurs darf ich sie nicht benutzen.
|
Re: PI
ist sowieso falsch :wink:
befindet sich in der Unit "System". Die Function heißt "Pi" und gibt nen Extended-Wert zurück :warn: EDIT: Wieso darfst du keine Unit "Math" benutzen?! o.O Ist doch ne reguläre Unit wie jede andere auch... Naja, "System" darfst du GANZ SICHER benutzen wenn du Delphi programmierst ^^ |
Re: PI
![]() Immerhin gibt es ja viele Quellen wo man nachlesen kann, welchen Wert PI hat. |
Re: PI
Zur Not definierst du es dir halt selbst als const-Wert. Dort kannst du auch die Genauigkeit entsprechend setzen.
Delphi-Quellcode:
const
PI = 3.14...; |
Re: PI
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: PI
Die System-Unit wird (meines wissens) bei jedem Programm oben in der "uses"-Klausel eingebunden ^^
|
Re: PI
Zitat:
|
Re: PI
Zitat:
|
Re: PI
Zitat:
(Sturz auf den kopf tut nunmal weh ^^) und wer versucht potenzen mit nem String zu lösen, der kriegt auch kopfschmerzen ^^ (nur in diesem fall auf eine andere art und weise :zwinker: ) |
Re: PI
Und wer sowas Schülern bei bringt, gehört erschossen.
|
Re: PI
okay, da hast du recht :(
|
Re: PI
Wir wollen hier aber nicht aktiv zur Gewalt aufrufen. :warn:
:mrgreen: |
Re: PI
Lehrermord führt zu lebenslanger Haftstrafe, also gut überlegen :mrgreen:
|
Re: PI
Aja mein lehrer ist halt nicht der beste xD aber trotzdem war das jetzt mit den Potenzen nicht so schwer :D
Delphi-Quellcode:
begin
n := 1; y:= zahl; repeat n := n+1; zahl := zahl * y; until n = zahl2; end; |
Re: PI
Zitat:
![]() Alles ist möglich, aber nicht grade effektiv und schnell. :roll: Im Prinzip entspricht es dem, wie man es auch mit Stift und Zettel per Hand/Kopf lösen könnte. Bei der Trial sind wohl keine Quellcodes dabei, aber die DCUs sind es und somit kann man die Unit Math auch einbinden/benutzen. Aber mal ganz im Enst, wenn ihr grade mal vor einer Woche mit Delphi angefangen habt, würde ich als Lehrer nicht jetzt schon mit sowas anfangen, sondern erstmal die wichtigsten Grundlagen, sowie das Debuggen lehren. Auch wenn das wohl nicht grade ein spannendes Thema ist, aber IMHO gehört es dazu und ohne kann man eigentlich nicht "richtig" machen. Zitat:
ich dachte da kommt man Aufgrund besonderer Umstände und duch die Jahrelang ertragenen seelischen Grausamkeiten, auf Bewährung davon? Zitat:
Wobei die Potenz 0 und alle Negativen auch noch nicht behandelt werden.
Delphi-Quellcode:
if zahl2 < 0 then
begin // hier einfach mal eine Fehlermeldung ausgeben end if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do begin zahl := zahl * y; n := n + 1; end; end else zahl := 1 |
Re: PI
Zitat:
Zudem haben wir zu Beginn eine Ampel programmiert so zum Einstieg und jetzt erst sind wir bei dem T-rechner. Insgesamt hatt ich jetzt ca. 6 Schulstunden Informatik in dem es ums Programieren geht/ging und seit dem wir auch mit Delphi angefangen haben. Achja und das ich soviele Fragen stelle ist nicht unbedingt für die Schule, denn das was ich für die Schule brauchte war einfach nur mit ner Schleife zu potenzieren weiter nichts. Das mit Pi, Sinus, Cosinus etc. mach ich eig nur füer mich weil ich Spaß am proggen habe :D Zitat:
Delphi-Quellcode:
Fehler:Konstantenausdruck erwartet
begin
// hier einfach mal eine Fehlermeldung ausgeben end if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 zahl := zahl * y; n := n + 1; end; end else zahl := 1 // hier kommt en Fehler |
Re: PI
Zitat:
Zitat:
![]() Zitat:
|
Re: PI
Dein
Delphi-Quellcode:
müsste eigentlich besser so funktionieren
while n < zahl2
Delphi-Quellcode:
while n < zahl2 do
begin ... Anweisungen end; |
Re: PI
Also hier mal den Code den ich jetzt drin habe und wo bei mir dann schließlich der Fehler auftaucht:
Delphi-Quellcode:
if zahl2 < 0 then
begin showmessage ('Nicht erlaubt'); end; if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do zahl := zahl * y; n := n + 1; end else zahl := 1; end; Der Fehler kommt bei mir bei
Delphi-Quellcode:
und als Fehler steht dort: E2026 Konstantenausdruck erwartet
zahl := 1;
|
Re: PI
du hast da auch ein begin und ein end vergessen ;)
Delphi-Quellcode:
if zahl2 < 0 then
begin showmessage ('Nicht erlaubt'); end; if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do begin //hier begin vergessen! zahl := zahl * y; n := n + 1; end; //und das dazugehörige end; end else zahl := 1; end; |
Re: PI
Bitte gewöhne dir gleich von Anfang an das Einrücken an, auch wenn es mehr Arbeit bedeutet... im Endeffekt spart es aber unheimlich viel Arbeit! Vielleicht fällt dir hier etwas auf:
Delphi-Quellcode:
if zahl2 < 0 then
begin showmessage ('Nicht erlaubt'); end; if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do zahl := zahl * y; n := n + 1; end else zahl := 1; end; |
Re: PI
Delphi-Quellcode:
thx dafür aber es kommt immer noch der selbe Fehler bei: zahl := 1; :S
if zahl2 < 0 then
begin showmessage ('Nicht erlaubt'); end; if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do begin //hier begin vergessen! zahl := zahl * y; n := n + 1; end; //und das dazugehörige end; end else zahl := 1; end; |
Re: PI
Abgesehn von dem fehlenden ELSE zwischen
Delphi-Quellcode:
Zeige mal bitte die gesamte Prozedur, denn in dem aktuell gezeigten Code-Stückchen gibt es anscheinend keinen Grund für diese Fehlermeldung.
end;
if zahl2 > 0 then PS: genau aus solchen Gründe sollten die ersten Stunden für Themen wie - Verwendung der IDE und der OH - Codeformatierung - Fehleranalyse - Debugging verwendet werden. Ist jetzt kein Vorwurf an dich, sondern mehr an die Lehrer, welche oftmals selber nicht grade "richtig" Ahnung haben. |
Re: PI
Delphi-Quellcode:
Hier das ist die Prozedur wo der Codeschnipsel herstammt.
procedure TForm2.ButtonGleichClick(Sender: TObject);
{************************************************************************} var zahl2,n : double; pi : real; begin zahl2 := strtofloat (Edit1.Text); case merk of plus: zahl := zahl + zahl2; minus: zahl := zahl - zahl2; mal: zahl := zahl * zahl2; geteilt: zahl := zahl / zahl2; hoch: zahl := zahl * zahl; wurzel: zahl := sqrt(zahl); hochx: if zahl2 < 0 then // Hier Fängts An! begin showmessage ('Nicht erlaubt'); end else if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do begin zahl := zahl * y; n := n + 1; end; end else zahl := 1; end; wurzelx: begin n := zahl; zahl := exp((1/n)*ln(zahl2)); end; prozent: begin n := 100; zahl := zahl * zahl2 / n; end; end; edit1.text:=floattostr(zahl); neue_zahl := True; ButtonKomma.Enabled := True; ButtonGleich.Enabled := False; end; |
Re: PI
Schließ den ganzen Code zum Label "hochx" mal in begin und end ein.
Delphi-Quellcode:
case...of
... hochx: begin //Dein Code end; |
Re: PI
Delphi-Quellcode:
procedure TForm2.ButtonGleichClick(Sender: TObject);
{************************************************************************} var zahl2,n : double; pi : real; begin zahl2 := strtofloat (Edit1.Text); case merk of plus: zahl := zahl + zahl2; minus: zahl := zahl - zahl2; mal: zahl := zahl * zahl2; geteilt: zahl := zahl / zahl2; hoch: zahl := zahl * zahl; wurzel: zahl := sqrt(zahl); hochx: begin if zahl2 < 0 then // Hier Fängts An! begin showmessage ('Nicht erlaubt'); end else if zahl2 > 0 then begin n := 1; y := zahl; while n < zahl2 do begin zahl := zahl * y; n := n + 1; end; end else zahl := 1; end; end; wurzelx: begin // HIer ist ein neuer Fehler n := zahl; zahl := exp((1/n)*ln(zahl2)); end; prozent: begin n := 100; zahl := zahl * zahl2 / n; end; end; edit1.text:=floattostr(zahl); neue_zahl := True; ButtonKomma.Enabled := True; ButtonGleich.Enabled := False; end; Der alte fehler ist weg aber ein neuer ist da -.- |
Re: PI
Zitat:
Grüße Klaus |
Re: PI
Der heißt auf Deutsch "jetzt hat er ein end zuviel". Es geht eben nichts über eine gescheite Einrückung :)
|
Re: PI
Zitat:
Hoffe du/ihr kannst/könnt helfen. |
Re: PI
Zähl mal die "begin"s und "end"s innerhalb des Labels "hochx".
|
Re: PI
Zitat:
Ja es geht wieder ich danke dir ^^ und auch allen anderen die sich darum bemühen mir zu helfen :) |
Re: PI
Zitat:
Solange du noch die 2010-Trial nutzt ... drücke mal in deinem Codefenster Strg+D und freue dich darüber, wie Delphi das für dich erledigt. :angel: |
Re: PI
Zitat:
|
Re: PI
:)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz