Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Frage zu SQRT in einer Konsolenanwendung (https://www.delphipraxis.net/53594-frage-zu-sqrt-einer-konsolenanwendung.html)

Rayzen 19. Sep 2005 16:20


Re: Diagonale ausrechnen
 
Huhu :)
wäre über eure Hilfe dankbar,
denn ich soll eine Konsolenanwendung schreiben und zwar sieht meine bisher folgendermaßen aus.

Delphi-Quellcode:
program rechteckuad;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var a,b,f,u,h:integer;
    qh,qb,la,lb:real;
begin
writeln ('Rechteckseiten eingeben');
writeln ('a='); Readln ( a );
writeln ('b='); Readln ( b );
f:=a*b;
Writeln ('Flächeninhalt f=', f);
readln;
writeln ('Seitenlängen eingeben für Umfang');
writeln ('Seite a='); Readln (u);
writeln ('Seite b='); Readln (b);
h:=2*u+2*b;
Writeln ('Umfang U=', h);
readln;
writeln ('Berechnung der Diagonale, bitte Breite und Höhe eingeben');
writeln ('Höhe'); Readln ( qh );
qh:=2*qh;
writeln ('Breite'); Readln ( qb );
qb:=2*qb;
writeln ('Ergebnis: '); Readln (la);
la:=qh+qb;
writeln ('Ergebnis2: '); Readln (la);
la:=sqrt

end.
Die Fehlermeldung ist:
Zitat:

[Fehler] rechteckuad.dpr(32): E2250 Es gibt keine überladene Version von 'Sqrt', die man mit diesen Argumenten aufrufen kann
Es klappt alles bis auf die Diagonalen Berechnung.
Nun weiß ich leider nicht wie ich das ändern bzw ausbessern könnte.

Mit freundlichen Grüßen
Rayzen

Sharky 19. Sep 2005 16:35

Re: Diagonale ausrechnen
 
Hai Rayzen,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS".

Zitat:

Die Fehlermeldung ist: [Fehler] rechteckuad.dpr(32): E2250 Es gibt keine überladene Version von 'Sqrt', die man mit diesen Argumenten aufrufen kann
Die Fehlermeldung sollt eigentlich nicht kommen. Der Fehler im Code ist diese Zeile:
Delphi-Quellcode:
la:=sqrt
Der Funktion Delphi-Referenz durchsuchensqrt musst Du einen Wert übergeben (sonst weiss sie ja nicht von was sie die Quadratwurzel ziehen soll ;-)

Zum Beispiel:
la := sqrt (5);

Rayzen 19. Sep 2005 16:51

Re: Diagonale ausrechnen
 
Danke :)

Er zeigt zwar jetzt keinen Fehler mehr an, leider zeigt er mir aber auch kein Ergebnis.

Entschuldige, wenn sich das jetzt doof anhört, aber welchen Wert muss ich dort eingeben für sqrt.
bzw. was genau.

Vielen Dank schonmal für deine Hilfe :cheers:

Leider funktioniert es so nicht.
qh²:=qh²;
qb²:=qb²;
la:=Sqrt(qh²+qb²=la)

DevilsCamp 19. Sep 2005 17:33

Re: Diagonale ausrechnen
 
Zitat:

Zitat von Rayzen
Huhu :)
wäre über eure Hilfe dankbar,
denn ich soll eine Konsolenanwendung schreiben und zwar sieht meine bisher folgendermaßen aus.

Delphi-Quellcode:
program rechteckuad;

{$APPTYPE CONSOLE}

uses
  SysUtils;
var a,b,f,u,h:integer;
    qh,qb,la,lb:real;
begin
writeln ('Rechteckseiten eingeben');
writeln ('a='); Readln ( a );
writeln ('b='); Readln ( b );
f:=a*b;
Writeln ('Flächeninhalt f=', f);
readln;
writeln ('Seitenlängen eingeben für Umfang');
writeln ('Seite a='); Readln (u);
writeln ('Seite b='); Readln (b);
h:=2*u+2*b;
Writeln ('Umfang U=', h);
readln;
[pre]writeln ('Berechnung der Diagonale, bitte Breite und Höhe eingeben');
writeln ('Höhe'); Readln ( qh );
qh:=2*qh;
writeln ('Breite'); Readln ( qb );
qb:=2*qb;
writeln ('Ergebnis: '); Readln (la);
la:=qh+qb;
writeln ('Ergebnis2: '); Readln (la);
la:=sqrt
end.
Die Fehlermeldung ist:
Zitat:

[Fehler] rechteckuad.dpr(32): E2250 Es gibt keine überladene Version von 'Sqrt', die man mit diesen Argumenten aufrufen kann
Es klappt alles bis auf die Diagonalen Berechnung.
Nun weiß ich leider nicht wie ich das ändern bzw ausbessern könnte.

Mit freundlichen Grüßen
Rayzen

Deine Berechnung der Diagonalen ist ersten Falsch und zweitens an der falschen stelle.

Delphi-Quellcode:
writeln ('Berechnung der Diagonale, bitte Breite und Höhe eingeben');
writeln ('Höhe'); Readln ( qh );

// Es ist nicht ZWEIMAL qh sondern qh-MAL qh
qh:=qh*qh;
writeln ('Breite'); Readln ( qb );

// Ebenso bei der Breite
qb:=qb*qb;

// nun die Diagonale:
la:=sqrt(qb+qh);
writeln ('Ergebnis: '); Readln (la);

Sharky 19. Sep 2005 17:35

Re: Diagonale ausrechnen
 
Hai Rayzen,

zeige doch mal den Code denn Du jetzt hast. Ausserdem wäre es gut wenn Du Kommentare in der Code Schreibst. Dann muss man nicht erst überlegen was Du überhaupt machen möchtest ;-)


P.S.:
Ich lese den Thread auch wenn Du mir keine PN sendest ;-)

DevilsCamp 19. Sep 2005 17:40

Re: Diagonale ausrechnen
 
ups. Da habe den Fehler ja komplett übersehen:


Delphi-Quellcode:
writeln ('Berechnung der Diagonale, bitte Breite und Höhe eingeben');
writeln ('Höhe'); Readln ( qh );

// Es ist nicht ZWEIMAL qh sondern qh-MAL qh
qh:=qh*qh;
writeln ('Breite'); Readln ( qb );

// Ebenso bei der Breite
qb:=qb*qb;

// nun die Diagonale:
la:=sqrt(qb+qh);
writeln ('Ergebnis: ');

// ----> das ist der Fehler: Readln (la);
// Es muss heißen:
writeln(la);
Du lässt la nicht berechnen sondern vom Benutzer eingeben. Darum zeigt der dir kein Ergebnis an

Rayzen 19. Sep 2005 17:41

Re: Diagonale ausrechnen
 
Vielen Dank erstmal.

Ich hab das ganze nun mal so gemacht, wie bei dir beschrieben, nur bekomme ich kein ergebnis angezeigt.

Ahh, vielen Dank, nun klappt es...

Toll, das ihr euch die Zeit genommen habt für mich Anfänger :)

Mit freundlichen Grüßen
Rayzen

DevilsCamp 19. Sep 2005 17:48

Re: Frage zu SQRT in einer Konsolenanwendung
 
mach mal vor dem abschliessenden "end." ein "Readln;" rein (jeweils ohne die ")...

BlackJack 19. Sep 2005 17:58

Re: Diagonale ausrechnen
 
Zitat:

Zitat von Rayzen
Leider funktioniert es so nicht.
qh²:=qh²;
qb²:=qb²;
la:=Sqrt(qh²+qb²=la)

oO
krass, so einen heftigen source hab ich noch nie gesehen :mrgreen:
naja egal, jeder hat mal klein angefangen.

1. Quadrieren geht nicht so einfach über das zeichen "²", sondern entweder die variable mit sich selber multiplzieren oder die funktion Sqr() benutzen.
2. Selbst wenn es so ginge, würde "qb²:=qb²;" ja nichts bewirken; du machst ja nichts anderes als z.b. x := x;, da kann ja gar nichts passieren
3. "Sqrt(qh²+qb²=la)" ich weiss nciht was du hier mit dem "=la" bewirken willst.

es müsste also wahlweise so aussehen, damit die syntax stimmt, ich weiss jetzt nicht ob auch die rechnung richtig ist:
Delphi-Quellcode:
la := Sqrt(Sqr(qh) + Sqr(qb));
//oder
la := Sqrt(qh*qh + qb*qb);
//oder
qh := Sqr(qh);
qb := Sqr(qb);
la := Sqrt(qh + qb);
//oder gar
qh := qh*qh;
qb := qb*qb;
la := Sqrt(qh + qb);
ich würde allerdings die 1. variante bevorzugen.

Rayzen 19. Sep 2005 18:03

Re: Frage zu SQRT in einer Konsolenanwendung
 
Naja, bin schon happy das es so geklappt hat.

Aber zu deiner Frage, la=laenge=lösung :)

Werde mir deine Hinweise zu Herzen nehmen und die anderen Vorschläge mal ausprobieren.

das "readln;" hab ich da, sonst könnte man ja nich lesen, soweit wusste ich es schon.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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