Seite, a,b, Seite c, winkel a,b,c sollen berechnet werden. Als ausgangswerte müssen a und b zuerst eingegeben weerden.(vorgabe rechter winkel zwischen a und b)
wie sieht programm?
helft mir schnell bitte
Zunächst musst du zwei Eingabefelder machen, wo a und b eingetragen werden können. (Nicht vergessen, die beschreibbar zu machen). Anschließend noch einen Button, der auf Klick die beiden Textfelder ausliest und an Variablen übergibt.
Anschließend errechnest du über die Formeln die Lösungswerte. Benutz dazu ruhig Zwischenvariablen (und mach sie ruhig eindeutig, nicht, dass du dich vertust).
Dann letztendlich hast du noch Textfelder oder Eingabefelder geschaffen, wo du dann die entsprechenden errechneten Variablen als Text oder als Input übergibst.
Sinnvoll wäre noch eine if-Schleife, falls eine Zahl nicht eingetragen ist oder was ungültiges rauskommt.
Vergiss nicht, das Zahlenformat für den Input zu definieren, denn „nur-Zahl“ funktioniert ja nicht
So, und mehr musste für den Informatik-Unterricht in deiner Schule selber nachdenken. (Daher auch die nicht zeitgleiche Antwort
Antwort von Hajo
Es müssen beispielsweise 5 Label mit erläuternder Funktion und 5 Edit mit Eingabe- bzw. Ausgabefunktion sowie zwei Button auf 1 Formular bereitgestellt werden.
Der Endebutton ist wehlassbar. Die entscheidende Prozedur wird mit dem Berechne-Button (Namen aus Button1 abändern)gestartet. Durch Doppelklick auf die Button erhält man die leeren Prozeduren. Der Implementationsteil muss so aussehen, wobei man den Kommentar in den geschweiften Klammern weglassen kann:
implementation
{$R *.DFM}
procedure TForm1.endeClick(Sender: TObject);
begin
close;
end;
procedure TForm1.BerechneClick(Sender: TObject);
Var a,b,c, tanalpha,tanbeta,alpha,beta,pi:real;
begin
pi:=3.14159;
a:=StrToFloat(edit1.text); {Label1 mit „a eingeben“ als caption vor Edit1}
b:=StrToFloat(edit2.text); {Label2 mit „b eingeben“ als caption vor Edit2}
c:=sqrt(sqr(a)+sqr(b)); {nach Pythagoras}
tanalpha:=a/b; {Berechnen des Tangens im Bogenmaß}
tanbeta:=b/a;
alpha:=arctan(tanalpha)*180/pi; {Umkehrrung des Tangens, gibt es für sin nicht}
beta:=arctan(tanbeta)*180/pi;
edit3.text:=FloatToStr©; {Label3 mit „c=“ als caption vor Edit3}
edit4.text:=FloatToStr(alpha); {Label4 mit „Alpha=“ als caption vor Edit4}
edit5.text:=FloatToStr(beta); {Label5 mit „Beta=“ als caption vor Edit5}
end;
end.
zunächst mal musst du c errechnen. Dazu benutzt du einfach den Satz des Pythagoras, also a^2 + b^3 := c^2. Mit sqrt() kannst du dann die Wurzel ziehn.
Dann gehts daran die Winkel zu bestimmen. Dazu benutzen wir einfach den Sinus-Satz: b/c = sin(winkelb)/sin(winkelc)
Umgeformt haben wir dann sin(winkelb) = b/c * sin(winkelc)
Jetzt einfach noch a := 180 - c - b und du hast auch die winkel. Fertig
hier die Unit:
unit dreieckberechnung;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Math,types;
type
TForm1 = class(TForm)
GroupBox2: TGroupBox;
Label3: TLabel;
Label6: TLabel;
Label4: TLabel;
Label7: TLabel;
Label5: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label2: TLabel;
Label1: TLabel;
GroupBox1: TGroupBox;
PaintBox1: TPaintBox;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
procedure LabeledEdit1Change(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
a,b,c,h:extended;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.LabeledEdit1Change(Sender: TObject);
var
a,b,c,h: extended;
begin
a:=strtofloat(labelededit1.text);
b:=strtofloat(labelededit2.text);
c:=roundto(sqrt(a*a+b*b),-4); //Wurzel aus a² + b² = c
Label1.Caption:=floattostr©;
Label6.Caption:=floattostr(roundto(180/Pi*arcsin(a/c),-3)); //arcsin a/c ergibt den Winkel alpha im Bogenmaß, 180/Pi wandelt in Grad um
Label7.Caption:=floattostr(roundto(90-180/Pi*arcsin(a/c),-3));
Label8.Caption:=floattostr(90);
h:=roundto(b*sin(arcsin(a/c)),-4);
Label10.Caption:=floattostr(roundto(h,-4));
end;
end.
Aber klar doch =)
Hallo,
simple Geschichte; hab ich mir grad aus den Fingern gesaugt =)
program Trigonom;
{$APPTYPE CONSOLE}
uses Math, SysUtils;
var
BC, CA,
nA, nB, nC: Real;
A, B: string;
begin
WriteLn('Laenge Seite A: '); ReadLn(A);
WriteLn;
WriteLn('Laenge Seite B: '); ReadLn(B);
if (a = '') or (b = '') then begin
WriteLn('Fehler bei der Eingabe!');
ReadLn;
Halt;
end;
nA := StrToFloat(A);
nB := StrToFloat(B);
nC := sqrt(nA\*nA + nB\*nA);
WriteLn;
WriteLn('Laenge Seite C: ', FormatFloat('0.000', nC), ' Laengeneinheiten');
WriteLn;
WriteLn('Winkel AB: ', FormatFloat('0.000', 90), ' Grad');
BC := ArcSin(nA/nC);
BC := BC \* 180 / Pi;
BC := RoundTo(BC, 0);
WriteLn;
WriteLn('Winkel BC: ', FormatFloat('0.000', BC), ' Grad');
CA := 90 - BC;
WriteLn;
WriteLn('Winkel CA: ', FormatFloat('0.000', CA), ' Grad');
WriteLn;
WriteLn('Taste zum Beenden druecken...');
ReadLn;
end.
Viel Spaß damit!
-Chris