tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
2262
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HoLLoWManN HoLLoWManN ist offline Grünschnabel
    Registriert seit
    Jan 2004
    Beiträge
    4
    Dieses Programm soll in einer Prozedure in eienr Unit die wurzelberechnen und diese ausgeben, nur bekomm ich es nicht hin wenn es keien Lösung gibt. Da kackt das programm immer ab weil es Division durch 0 ist.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Hauptprogram
     
    procedure TForm1.Button1Click(Sender: TObject);
    var  p,q,d,e,f,g : Real;
    begin
         p:=StrToFloat(pEdit.Text);
         q:=StrToFloat(qEdit.Text);
         Quad(p,q,d,e,f,g);
     
    end;

    Code :
    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
    
     Die unit
     
    unit Rechnen;
     
    interface
     
    procedure Quad (p,q:Real;var d,e,f,g:Real);
     
    implementation
     
    procedure Quad (p,q:Real;var d,e,f,g:Real);
    begin
    d:=(p/2)-q;
     
    if d<0 then
    begin
    Panel2.Caption:='Es Gibt keine Nullstelle';
    X1Edit.Text:=' ';
    X2Edit.Text:=' ';
    end
    else;
    If d=0 then
    begin
    d:=sqr((p/2)-q);
    e:=-p/2;
    Panel2.Caption:='Es Gibt eine Nullstelle';
    X1Edit.Text:=FloatToStr(e);
    X2Edit.Text:=' '
    end
    else
    Begin
    f:=-p/2+ Sqrt(d);
    g:=-p/2- Sqrt(d);
    Panel2.Caption:='Es Gibt zwei Nullstellen';
    X1Edit.Text:=FloatToStr(f);
    X2Edit.Text:=FloatToStr(g)
    end;
     
    end
    end;
    end.

    ich hatte als erstes die Ganzen ausgaben im Hauptprogramm aber dann hab ich das nciht mti der utnerscheidung hinbekommen wenns Diskriminat negativ ist weil er das dann vollkommen ignoriert hat, ka wieso.

    Hoffe irgendwer kann mir helfen
     

  2. #2
    Hellie Hellie ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    252
    Wie ich das sehe, hast du zwei If-then-else drin. Erstmal
    d<0 then ... else ; und dann noch mal if d=0 then ... else ... Na ja, und das letzte wird halt auch ausgeführt, wenn d<0 ist. Und dann gibt es einen mathematischen Fehler, weil man aus einer negativen Zahl keine Wurzel ziehen kann.

    Division durch 0 kann ich da nicht erkennen?!

    Und was mich auch wundert, deine Diskriminante berechnet sich p/2-q. Berechnet sie sich nicht eigentlich p²/4-q?

    lg Hellie
     

Ähnliche Themen

  1. Math.h Wurzelberechnung Domain Fehler?
    Von bigfella im Forum Borland CBuilder und VCL
    Antworten: 4
    Letzter Beitrag: 26.01.06, 11:24