AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim Runden

Ein Thema von woibauer · begonnen am 3. Okt 2009 · letzter Beitrag vom 4. Okt 2009
 
woibauer

Registriert seit: 3. Okt 2009
1 Beiträge
 
#1

Fehler beim Runden

  Alt 3. Okt 2009, 10:48
Warum rundet das Programm falsch ???

Aufgabe war die Dreiecksberechnung ohne Math-Unit zu benutzten


Delphi-Quellcode:
program Dreieck; {$APPTYPE CONSOLE} uses
  SysUtils;

var
  s, fa: integer;
  a, b, c, alpha_r, alpha_d, h, f, u: real;
  h_s, f_s, a_s, u_s, c_s, b_s, alpha_d_s: string;
  x: char;

const
  phi = 3.14159265358979323846264;

begin
  Repeat

  begin
    Writeln(
      'Berechnung des Flaecheninhaltes, Umfanges, der anderen Seit und der Hoehe ');
    Writeln(
      'eines Dreiecks durch die Eingab von 2 Seiten und dem dazwischen liegendem Winkel');
    Writeln('Start mit Return-Taste');
    readln(x);
    write('Erste Seite (c) in cm = ');
    readln(c);
    write('Zweite Seite (b) in cm = ');
    readln(b);
    write('Der Winkel zwischen den beiden Seiten (alpha) = ');
    readln(alpha_d);
    write('Genauigkeit des Rundens (Stellen)');
    readln(s);
    case s of
      1:
        fa := 10;
      2:
        fa := 100;
      3:
        fa := 1000;
      4:
        fa := 10000;
      5:
        fa := 100000;
      6:
        fa := 1000000;
      7:
        fa := 10000000;
      8:
        fa := 100000000;
      9:
        fa := 1000000000;
      10:
        fa := 10000000000;

    else
      fa := 10000000000;
      Writeln('');
      Writeln('Programm ist zu ungenau. Es wird mit 10 Stellen gerechnet')
    end;

    if alpha_d < 180 then
    begin
      alpha_r := alpha_d * (phi / 180);
      h := sin(alpha_r) * b;
      f := 0.5 * c * h;
      a := sqrt(b * b + c * c - 2 * b * c * cos(alpha_r));
      u := a + b + c;
      c_s := FloatToStr(c);
      b_s := FloatToStr(b);
      alpha_d_s := FloatToStr(alpha_d);
      h_s := FloatToStr(round(h * fa) / fa);
      f_s := FloatToStr(round(f * fa) / fa);
      a_s := FloatToStr(round(a * fa) / fa);
      u_s := FloatToStr(round(u * fa) / fa);
      Writeln('');
      Writeln('Das Dreieck mit der Seite c ', c_s, ' cm');
      Writeln('und der Seite b ', b_s, ' cm');
      Writeln('und dem Winkel alpha ', alpha_d_s, ' in Grad');
      Writeln('hat einen Flaecheninhalt von ', f_s, ' cm im Quadrat');
      Writeln('und einen Umfang von ', u_s, ' cm');
      Writeln('');
      Writeln('die letzte Seite a betraegt ', a_s, ' cm');
      Writeln('und die Hoehe h ist ', h_s, ' cm');
      Writeln('');
      Writeln(h, ' h ', f, ' f ', a, ' a ', u, ' u');
    end
    else
      Writeln('Das Dreieck ist nicht berechenbar');
    Writeln('');
    Writeln('Zum Beenden # eingeben und mit Return bestaetigen');
    readln(x);
  end;
  Until x = '#end.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz