Schulprojekt: Rechner Satz des Pythagoras :((

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
MicSc
Beiträge: 5
Registriert: Di 5. Jun 2012, 13:53

Schulprojekt: Rechner Satz des Pythagoras :((

Beitrag von MicSc »

Code: Alles auswählen

mplementation
var KatheteA, KatheteB, ZufallszahlA, ZufallszahlB, Anzahl :integer;
     HypotenuseC, HypotenusenabschnittP, HypotenusenabschnittQ, Hc, Umfang,
     Flaeche, EingabeC, EingabeP, EingabeQ, EingabeHc, EingabeU, EingabeA :real;
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Label2Click(Sender: TObject);
begin
 
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  close;
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
  ZufallszahlA := StrToInt(KatheteAEdit.text);
 
  ZufallszahlB := StrToInt(KatheteBEdit.text);
 
  HypotenuseC := Sqrt(ZufallszahlA*ZufallszahlA + ZufallszahlB*ZufallszahlB);
  HypotenuseCEdit.text := FloatToStrF(HypotenuseC, ffFixed, 10,2);
 
  HypotenusenabschnittP := ZufallszahlA*ZufallszahlA/HypotenuseC;
  HypotenusenabschnittPEdit.text := FloatToStrF(HypotenusenabschnittP, ffFixed, 10,2);
 
  HypotenusenabschnittQ := ZufallszahlB*ZufallszahlB/HypotenuseC;
  HypotenusenabschnittQEdit.text := FloatToStrF(HypotenusenabschnittQ, ffFixed, 10,2);
 
  Hc := Sqrt(HypotenusenabschnittP*HypotenusenabschnittQ);
  HcEdit.text := FloatToStrF(Hc, ffFixed, 10,2);
 
  Umfang := ZufallszahlA+ZufallszahlB+HypotenuseC;
  UmfangEdit.text := FloatToStrF(Umfang, ffFixed, 10,2);
 
  Flaeche := (HypotenuseC*Hc)/2;
  FlaecheEdit.text := FloatToStrF(Flaeche, ffFixed, 10,2);
 
  Anzahl := StrToInt(AnzahlEdit.text);
  AnzahlEdit.text := IntToStr(Anzahl);
 
  EingabeC := StrToFloat(EingabeCEdit.text);
  If EingabeC = HypotenuseC                                    <- hier fängt das problem an :(
     Then begin
          Anzahl := Anzahl+1;
          end;
 
  EingabeP := StrToFloat(EingabePEdit.text);
  If EingabeP = HypotenusenabschnittP
     Then Anzahl := Anzahl+1;
 
  EingabeQ := StrTOFloat(EingabeQEdit.text);
  If EingabeQ = HypotenusenabschnittQ
     Then Anzahl := Anzahl+1;
 
  EingabeHc := StrToFloat(EingabeHcEdit.text);
  If EingabeHc = Hc
     Then Anzahl := Anzahl+1;
 
  EingabeU := StrToFloat(EingabeUEdit.text);
  If EingabeU = Umfang
     Then Anzahl := Anzahl+1;
 
  EingabeA := StrToFloat(EingabeAEdit.text);
  If EingabeA = Flaeche
     Then Anzahl := Anzahl+1;                                  <- hier hört es aus (ansonsten ist das alles richtig hoffe ich :) )
 
 
end;
 
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
  KatheteA := StrToInt(KatheteAEdit.text);
  KatheteA :=0;
  KatheteAEdit.text := IntToStr(ZufallszahlA);
 
  KatheteB := StrToInt(KatheteBEdit.text);
  KatheteB :=0;
  KatheteBEdit.text := IntToStr(ZufallszahlB);
 
  Randomize;
  ZufallszahlA := Random(100)+1;
  ZufallszahlB := Random(100)+1;
 
  HypotenuseC := StrToFloat(HypotenuseCEdit.text);
  HypotenuseC := 0;
  HypotenuseCEdit.text := FloatToStrF(HypotenuseC, ffFixed, 10,2);
 
  HypotenusenabschnittP := StrToFloat(HypotenusenabschnittPEdit.text);
  HypotenusenabschnittP := 0;
  HypotenusenabschnittPEdit.text := FloatToStrF(HypotenusenabschnittP, ffFixed, 10,2);
 
  HypotenusenabschnittQ := StrToFloat(HypotenusenabschnittQEdit.text);
  HypotenusenabschnittQ := 0;
  HypotenusenabschnittQEdit.text := FloatToStrF(HypotenusenabschnittQ, ffFixed, 10,2);
 
  Hc := StrToFloat(HcEdit.text);
  Hc := 0;
  HcEdit.text := FloatToStrF(Hc, ffFixed, 10,2);
 
  Umfang := StrToFloat(UmfangEdit.text);
  Umfang := 0;
  UmfangEdit.text := FloatToStrF(Umfang, ffFixed, 10,2);
 
  Flaeche := StrToFloat(FlaecheEdit.text);
  Flaeche := 0;
  FlaecheEdit.text := FloatToStrF(Flaeche, ffFixed, 10,2);
 
  EingabeC := StrToFloat(EingabeCEdit.text);
  EingabeC := 0;
  EingabeCEdit.text:= FloatToStrF(EingabeC, ffFixed, 10,2);
 
  EingabeP := StrToFloat(EingabePEdit.text);
  EingabeP := 0;
  EingabePEdit.text:= FloatToStrF(EingabeP, ffFixed, 10,2);
 
  EingabeQ := StrToFloat(EingabeQEdit.text);
  EingabeQ := 0;
  EingabeQEdit.text:= FloatToStrF(EingabeQ, ffFixed, 10,2);
 
  EingabeHc := StrToFloat(EingabeHcEdit.text);
  EingabeHc := 0;
  EingabeHcEdit.text:= FloatToStrF(EingabeHc, ffFixed, 10,2);
 
  EingabeU := StrToFloat(EingabeUEdit.text);
  EingabeU := 0;
  EingabeUEdit.text:= FloatToStrF(EingabeU, ffFixed, 10,2);
 
  EingabeA := StrToFloat(EingabeAEdit.text);
  EingabeA := 0;
  EingabeAEdit.text:= FloatToStrF(EingabeA, ffFixed, 10,2);
 
  Anzahl := StrToInt(AnzahlEdit.text);
  Anzahl := 0;
  AnzahlEdit.text := IntToStr(Anzahl);
 
  TippPanel1.Caption := ' ';
  TippPanel2.Caption := ' ';
  TippPanel3.Caption := ' ';
  TippPanel4.Caption := ' ';
  TippPanel5.Caption := ' ';
  TippPanel6.Caption := ' ';
end;
 
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
    TippPanel1.Caption := 'a² + b² = c²';
    TippPanel1.Font.Color := clgreen;
end;
 
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
    TippPanel2.Caption := 'a² = c * p   -->   a² / c = p';
    TippPanel2.Font.Color := clgreen;
end;
 
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
   TippPanel3.Caption := ' b² = c * q   -->   b² / c = q';
   TippPanel3.Font.Color := clgreen;
end;
 
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
  TippPanel4.Caption := ' h² = p * q ';
  TippPanel4.Font.Color := clgreen;
end;
 
procedure TForm1.BitBtn8Click(Sender: TObject);
begin
   TippPanel5.Caption := ' U = a + b + c ';
   TippPanel5.Font.Color := clgreen;
end;
 
procedure TForm1.BitBtn9Click(Sender: TObject);
begin
    TippPanel6.Caption := ' A = h * c / 2 oder A = 0.5 * h * c';
    TippPanel6.Font.Color := clgreen;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
   Randomize;
   ZufallszahlA := Random(100)+1;
   ZufallszahlB := Random(100)+1;
end;
hey leute!
das ist ein programm was ich als projekt abgeben will aber irgendwie kann ich die eingabe(die von einer person gemacht werdden soll) nicht mit den rechnungen vom computer vergleichen.

Es handelt sich hier um einen rechner für den Satz des Pythagoras welcher alle variablen aus rechnen soll, sobald man auf auswerten klickt.
doch vorher soll die person die dieses Programm benutzt, die variablen selber berechnen. Um nacher nachzugucken wie viele aufgaben die person richtig hat muss das programm die eingabe des 'Benutzers' und die das Ergebnis der rechnung des computers benutzen!
aber das funktioniert nicht so wie ich es programmiert habe.
Hilfe :(
Zuletzt geändert von Lori am Di 5. Jun 2012, 17:45, insgesamt 1-mal geändert.
Grund: Highlighter

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Schulprojekt: Rechner Satz des Pythagoras :((

Beitrag von u-boot »

Lade doch bitte das ganze Projekt hoch (ohne die kompilierten sachen).
Dann bekommt man schneller einen Überblick. (Ich habe ehrlich gesagt keine Lust, alles im Form-Designer nachzubauen... )

Beim Posten von Quelltext wäre die Nutzung von Highlighter hilfreich (liest sich einfacher).

Und "das funktioniert nicht" ist natürlich eine Fehlerbeschreibung :roll: .... aber ok, die will ich mit gutem Willen gelten lassen. Weil manchmal sieht man einfach nicht wo es schief läuft.

:arrow: also nicht verzagen ...:) kannst den Beitrag auch editieren. :)
Mit etwas Übung bekommt mans schon hin :wink:
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

MicSc
Beiträge: 5
Registriert: Di 5. Jun 2012, 13:53

Re: Schulprojekt: Rechner Satz des Pythagoras :((

Beitrag von MicSc »

Wie kann ich denn das ganze Projekt hochladen?!

Ich bin neu hier :)

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Schulprojekt: Rechner Satz des Pythagoras :((

Beitrag von u-boot »

ich mache es folgendermaßen:
1. projektordner öffnen
2. ausführbare Datei löschen (die ist meist sehr groß und kann jeder bei sich wieder erstellen lassen)
3. den ordner zippen
4. beim posten gibts ein Reiter "Dateianhang hochladen" (steht irgendwo unter dem absenden-button)
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: Schulprojekt: Rechner Satz des Pythagoras :((

Beitrag von mse »

MicSc hat geschrieben:

Code: Alles auswählen

If EingabeC = HypotenuseC                                    <- hier fängt das problem an :(
Damit dieser Vergleich als "wahr" gewertet wird, müssen EingabeC und HypotenuseC aufs Bit übereinstimmen. Davon kann man nicht ausgehen, da die Anwender nicht alle intern verwendeten Kommastellen eingeben werden. Und wenn, dann kann man sich nicht darauf verlassen, dass die Berechnungen des Pascalcompilers und des verwendeten Taschenrechners exakt übereinstimmen. Es muss also ein Toleranzbereich als richtig erkannt werden. Z.B. hat die unit math zu diesem Zweck die SameValue() Funktion.

Code: Alles auswählen

function SameValue(const A, B: Double; Epsilon: Double): Boolean;
 
begin
  if (Epsilon=0) then
    Epsilon:=Max(Min(Abs(A),Abs(B))*DZeroResolution,DZeroResolution);
  if (A>B) then
    Result:=((A-B)<=Epsilon)
  else
    Result:=((B-A)<=Epsilon);
end;
Martin

Antworten