Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Berechnung am Dreieck (Schulaufgabe) Wurzelproblem (https://www.delphipraxis.net/122942-berechnung-am-dreieck-schulaufgabe-wurzelproblem.html)

Isaac18 24. Okt 2008 15:35


Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Hallo,
wie ihr seht bin ich neu hier...

Wir hab in der Schule angefangen unter Delphi 7 zu programmieren...
Also haben erst ein paar wenig Grundlagen um simple Programme zu erstellen.

Wir haben eine Aufgabe wo man ein Programm erstellen soll welches den Umfang und die Fläche eines Dreiecks berechnet, nachdem die Längen der Drei Seiten angegeben(eingegeben) wurden.

Dabei soll die Fläche mit der Formel: A="Wurzel aus" s*(s-a)*(s-b)*(s-c) ,wobei s=a+b+c/2 ist.

Das grobe hab ich schon erstellt....
Mein Problem besteht darin das, wenn man auf den berechnen Button klickt ohne Werte eingegeben zu habe oder wenn Werte eingegeben werden,die ein nicht existierendes Dreieck definieren, dass dann eine Fehlermeldung kommt die sagt "Ungültige Gleitkommaoperation"

Ich denk mal das liegt an der Wurzel, nur ich weiß nicht wie man die anders schreiben kann...

Hier mein Quellcode:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
VAR
  a , b , c , s , flaeche , umfang: real;

begin

  a:=StrToFloat(Edit1.Text);
  b:=StrToFloat(Edit2.Text);
  c:=StrToFloat(Edit3.Text);
  s:=(a + b + c)*0.5;
  flaeche:=sqrt(s*(s - a)*(s - b)*(s - c));
  umfang:=(a + b + c);
  Edit4.Text:=FloatToStr(flaeche);
  Edit5.Text:=FloatToStr(umfang);

   IF a+b<c THEN
   begin
     label7.Caption:='Dieses Dreieck existiert nicht!';
   end



end;

end.
das mit dem IF ist noch nicht fertiggestellt....

DeddyH 24. Okt 2008 15:39

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Hallo und Willkommen in der DP :dp:

statt StrToFloat kannst Du Dir mal StrToFloatDef oder TryStrToFloat ansehen. Mit diesen beiden Funktionen kannst Du fehlerhaften Werten begegnen.

Medium 24. Okt 2008 15:50

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Willkommen in der DP!

Die Fehlermeldung lässt darauf schließen, dass du mit negativen Werten in die Wurzel kommst, weshalb man das u.U. nicht sofort an den eingegebenen falschen Werten erkennen kann. Ich würde die Rechnung etwas auseinander ziehen, um noch eine weitere Bedingung einzubauen:

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
VAR
  a , b , c , s , flaeche , umfang, tmp: real;
begin
  a:=StrToFloat(Edit1.Text);
  b:=StrToFloat(Edit2.Text);
  c:=StrToFloat(Edit3.Text);
  s:=(a + b + c)*0.5;
  tmp := s*(s - a)*(s - b)*(s - c);
  if tmp < 0 then
  begin
    ShowMessage('Ungültiges Dreieck oder Eingabe fehlerhaft!')
  end
  else
  begin
    flaeche:=sqrt(tmp);
    umfang:=(a + b + c);
    Edit4.Text:=FloatToStr(flaeche);
    Edit5.Text:=FloatToStr(umfang);

    IF a+b<c THEN
    begin
      label7.Caption:='Dieses Dreieck existiert nicht!';
    end;
  end;
end;

end.

DeddyH 24. Okt 2008 15:53

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Zitat:

Delphi-Quellcode:
ShowMessage('Ungültiges Dreieck oder Eingabe fehlerhaft!')

Bei fehlerhafter Eingabe kommst Du da erst gar nicht hin ;)

Medium 24. Okt 2008 15:56

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Man sollte beides tun, das kam evtl. nicht wirklich in meinem Beitrag rüber, ich gebs ja zu ;)

QuickAndDirty 24. Okt 2008 16:03

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Willkommen.
Es ist nicht schön wenn ein Schüler die Hausaufgabe schon erledigt hat und das Programm nur idiotensicher haben will?

Finde ich klasse, das auch noch zu erleben...

Isaac18 24. Okt 2008 16:09

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Okay viele dank schon mal an euch alle für die super schnelle Antwort.

Jetzt läuft es schon besser....
Nur, wenn man "ENTER" drückt bzw. "Berechnen" ohne das Werte eingeben wurden dann kommt die Fehlermeldung noch...?

Kann man da noch was machen...bei andren Programmen ist dann einfach nichts passiert...?

Isaac18 24. Okt 2008 16:12

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Zitat:

Zitat von QuickAndDirty
Willkommen.
Es ist nicht schön wenn ein Schüler die Hausaufgabe schon erledigt hat und das Programm nur idiotensicher haben will?

Finde ich klasse, das auch noch zu erleben...

Deine "Frage" check ich nicht... :?

fishbrain 24. Okt 2008 16:16

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Zitat:

Zitat von Isaac18
Zitat:

Zitat von QuickAndDirty
Willkommen.
Es ist nicht schön wenn ein Schüler die Hausaufgabe schon erledigt hat und das Programm nur idiotensicher haben will?

Finde ich klasse, das auch noch zu erleben...

Deine "Frage" check ich nicht... :?

Es war ne rhetorische frage.
Er freut sich, dass du dich so um Benutzer kümmerst ;).

Zu deiner Frage:
einfach
Delphi-Quellcode:
 If (Edit1.text = '') or (edit2.text = '') or (edit3.text = '') then exit
else [deinen normalen code]

Medium 24. Okt 2008 16:17

Re: Berechnung am Dreieck (Schulaufgabe) Wurzelproblem
 
Er hat nur "Es" und "ist" vertauscht :). Es ist eine mehr als erfreuliche Abwechslung, mal einen Schul-Informatiker hier zu haben, der nicht in unlesbarem "Gerade-Eben-Noch-Deutsch" zu vermitteln versucht, dass er a) keine Lust, und b) keinen Plan hat, und gerne alles geliefert haben möchte. Das steckt dahinter :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.
Seite 1 von 2  1 2      

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