Autor Beitrag
drummer
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 10.12.06 11:44 
hi leute...ich habe von der schule eine aufgabe bekommen ich soll ien prog schreiben welches entscheidet ob ein dreieck eindeutig zu konstruieren ist (2 seiten müssen länger als eine dritte sein) jedenfalls soll ich dazu "FUNCTION dreieck(a, b, c:integer):boolean" verwenden...gut hab ich gemacht, doch nun hab ich ein problem...dass programm sagt mir ich habe nicht genügend wirkliche parameter...
sagt mir bitte was an dem quelltext falsch ist!!!

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  FUNCTION dreieck (a, b, c:integer):boolean;

var
  Form1: TForm1;
  a,b,c :integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  a:=strtoint(edit1.Text);
  b:=strtoint(edit2.Text);
  c:=strtoint(edit3.text);

  if dreieck=(a+b)>c then
    begin
      dreieck:=true
    end;

  if dreieck=(a+c)>b then
    begin
     dreieck:=true
    end;

  if dreieck=(b+c)>a then
    begin
      dreieck:=true
    end;

  if dreieck=(a+b)<c then
    begin
      dreieck:=false
    end;

  if dreieck=(a+c)<b then
    begin
     dreieck:=false
    end;

  if dreieck=(b+c)<a then
    begin
      dreieck:=false
    end;

  if dreieck=true then
    begin
      showmessage('das dreieck ist eindeutig zu konstruieren, da 2 seiten größer als eine dritte sind')
    end;

  if dreieck=false then
    begin
      showmessage('das dreieck ist nicht zu konstruieren da zwei seiten icht länger sind als eine dritte')
    end;
end;

end.


Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 10.12.06 11:52 
Hi

*g* wenn du statt " FUNCTION dreieck (a, b, c:integer):boolean;" "var dreieck: boolean" hinschreibst gehts ;) aber ohne die Funktion. Du musst also deinen ganzen Code, den du hast unter FUNCTION dreieck (a, b, c:integer):boolean; schreiben (unten im Quelltext). Dann musst du Dreieck im Quelltext durch Result ersetzen => Die funktion gibt den Wert zurück. In die Button procedure bleibt dann nurnoch das zurück:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
var a,b,c: integer; dr: boolean;
begin
  a:=strtoint(edit1.Text);
  b:=strtoint(edit2.Text);
  c:=strtoint(edit3.text);
  
  dr:=Dreieck(a,b,c); //Hier rufst du die Funktion auf. Eine Funktion ist wie eine Procedure, nur dass sie ein Ergebnis zurückliefert

  if dr=true then
    begin
      showmessage('das dreieck ist eindeutig zu konstruieren, da 2 seiten größer als eine dritte sind')
    end;

  if dr=false then
    begin
      showmessage('das dreieck ist nicht zu konstruieren da zwei seiten icht länger sind als eine dritte')
    end;
end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: So 10.12.06 11:52 
Du musst natürlich auch eine Funktion schreiben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function Dreieck(A, B, C: Integer): Boolean;
begin
  Result := False;

  if A + B > C then
    Result := True;

//...

end;

procedure TForm1.Button1Click(Sender: TObject);  
begin  
  // ...

  if Dreieck(A, B, C) = True then
    ShowMessage('Geht...');

  // ...
end;

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 10.12.06 12:28 
Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: So 10.12.06 12:49 
Um damit du nicht alle Möglichkeiten überprüfen musst, kannst du ja einfach dem Benutzer sagen das er Die Hypothenuse in ein bestimmtes Feld eintragen MUSS!! Ob sie es wirklich ist kannst du ja ganz einfach mit üerbprüfen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
a := Edit1.text;
b := Edit2.text;
c := Edit3.text; //In Edit3 MUSS die Hyptohenuse eingetragen sein.

if (c > a) AND (c > b) then
  begin
  dreieck (a, b, c);
  end
    else
      ShowMessage('Die eigegebene Zahl ist keine Hypothenuse'); //Hier kommt dann ein belibiger Spruch über die unfähigkeit des Benutzer hin
drummer Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 10.12.06 13:38 
danke leutz
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: So 10.12.06 14:38 
user profile iconDragonclaw hat folgendes geschrieben:
Um damit du nicht alle Möglichkeiten überprüfen musst, kannst du ja einfach dem Benutzer sagen das er Die Hypothenuse in ein bestimmtes Feld eintragen MUSS!! Ob sie es wirklich ist kannst du ja ganz einfach mit üerbprüfen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
a := Edit1.text;
b := Edit2.text;
c := Edit3.text; //In Edit3 MUSS die Hyptohenuse eingetragen sein.

if (c > a) AND (c > b) then
  begin
  dreieck (a, b, c);
  end
    else
      ShowMessage('Die eigegebene Zahl ist keine Hypothenuse'); //Hier kommt dann ein belibiger Spruch über die unfähigkeit des Benutzer hin


so stimmts net ganz, weil wenn du ein gleichseitiges Dreieck hast dann is ja die Hypothenuse = den andren Seiten. (soviel zur "unfähigkeit des Benutzers" :wink: )

Also muss es statt
if (c > a) AND (c > b) then

so heißen
if (c >= a) AND (c >= b) then

Xion

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: So 10.12.06 14:43 
Stimmt, an ein gleichseitiges Dreieck hatte ich garnicht gedacht... Hab das Programm auch nicht selber getestet nur schnell hingeschrieben.
aim65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: So 10.12.06 15:40 
Bin zwar schon lange aus der Schule, aber soviel ich weiß, gibt's den Begriff Hypotenuse NUR bei einem rechtwinkligen Dreieck. Oder habt ihr die Spielregeln verändert? :shock:

Und was passiert, wenn man folgendes eingibt: a=10, b=2, c=3 ? :mrgreen:

Es muß ja auch sichergestellt sein, daß die Summe der Längen der beiden kürzeren Seiten immer größer ist als die Länge der längsten. Sonst gibt's kein Dreieck.

Viel Spaß beim Weiteknobeln.
Dragonclaw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 196

Windows Vista
Delphi 7 Prof.
BeitragVerfasst: So 10.12.06 15:47 
ARG... wieso bin ich eigentlich im MAthe LK. Klar du hast recht Hypothenusen gibts nur in rechtwinkligen Dreiecken. Ist aber im Endeffekt das gleiche ob man jetzt die Hypotenuse oder die längste Seite angibt.
aim65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 312

Win 9x, Win XP
Delphi 3pro, 7PE
BeitragVerfasst: So 10.12.06 22:31 
War ja nur so eine Randbemerkung. :P
@Drummer: Dein anfänglicher Ansatz ist übrigens der flexibelste, weil er eine beliebige Eingabe der drei Werte in die Felder ermöglicht. Hat halt jede Menge Fehler in der Umsetzung.
Hab's mal etwas umgeschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c: Integer;
    Dreieck: Boolean;
begin
  a:=strtoint(edit1.Text);
  b:=strtoint(edit2.Text);
  c:=strtoint(edit3.text);

  if (a+b)>c then dreieck:=true;
  if (a+c)>b then dreieck:=true;
  if (b+c)>a then dreieck:=true;
  if (a+b)<=c then dreieck:=false;   //'=' im Vergleich hinzugefügt!
  if (a+c)<=b then dreieck:=false;
  if (b+c)<=a then dreieck:=false;

  if dreieck then
     showmessage('das dreieck ist eindeutig zu konstruieren....')
  else
     showmessage('das dreieck ist nicht zu konstruieren....');
end;


Geht auch noch kompakter - aber so kann man das besser mit der Originalroutine vergleichen. Ist auch keine Funktion, aber wie man das umwandelt, kannst Du ja jetzt selbst herausfinden.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Mo 11.12.06 00:55 
Es ist höchstens eine Bedingung nicht erfüllt, also:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
function Dreieck(a, b, c: Integer): Boolean;
begin
  Result := (a+b-c)*(b+c-a)*(a+c-b) > 0;
end;