Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Mathematik

Lösung quadratischer Gleichungen

Lizenz:Erster Autor:Letzte Bearbeitung:
BSD-LizenzRedakteurytwinky 16.03.2011

Die Grundlage für die Lösung quadratischer Gleichung bildet dieses Bild,
Formeln zur quadratischen Gleichung das als Anhang(s.u.) beigefügt ist.
Die mathematische Herleitung der Formeln ist hier nicht Gegenstand der Untersuchung.
Es geht um's Programm. Hier ist der Code:

#define Real Single 'kann auch Double sein..
Const Author="QuadGlei.Bas v0.21.1 ¸2011 by ytwinky, MD", Esc=!"\27"'
Type QuaGleiRec 'Erstmal einen eigenen Typ erzeugen, da qgaf 3 Werte zurückgeben soll
  As Real x1, x2 ' 2 Reals
  As String SqrErr ' und einen String für Fehlermeldungen
End Type

Function qgaf(a As Real, b As Real, c As Real) As QuaGleiRec
  Dim r As QuaGleiRec 'als Hilfsvariable deklarieren
  Dim As Real p, q, d ' Variablen für die Funktion
  If a=0 Then ' Fehler
    r.SqrErr="keine quadratische Gleichung"
  Else
    p=b/a 'p normalisieren..
    q=c/a 'q ..auch
    d=p*p/4-q 'Diskriminante berechnen
    If d<0 Then 'Wert unter der Wurzel<0
      r.SqrErr="negative Diskriminante(keine relle L”sung..)"
    Else
      r.x1=-p*0.5+Sqr(d) 'Lösung 1 berechnen
      r.x2=-p*0.5-Sqr(d) 'Lösung 2 berechnen
      r.SqrErr="" 'kein Fehler
    End If
  End If
  Return r 'Ergebnis zurückgeben
End Function

Dim As QuaGleiRec x
Dim As Real a, b, c
Var m=""
Print Author
Do
    Print "Allgemeine Form: a*xý+b*x+c=0"
    Input "Koeffizient von xý: a=", a 'Eingabe des Koeffizienten von x²
    If a<>0 Then
        Input "Koeffizient von x : b=", b 'Eingabe des Koeffizienten von x
        Input "Konstante         : c=", c 'Eingabe der Konstanten c
    End If
    x=qgaf(a, b, c)
    If x.SqrErr<>"" Then
      Print "Fehler:" &x.SqrErr
    Else
      Print "x" & *IIf(x.x1<>x.x2, @"1", @"") &"=" &x.x1;
      If x.x1<>x.x2 Then Print " x2=" &x.x2;
      If x.SqrErr<>"" Then Print " SqrErr=" &x.SqrErr;
      Print
    End If
    Print "Noch eine Berechnung?(J/N):";
    m=""
    While m=""
        m=lcase(InKey)
    Wend
    Print m
Loop Until InStr("n" &Esc, m)

Attachments zum Code-Beispiel
BilddateiQuadGlei.pngFormeln zur quadratischen GleichungRedakteurytwinky10.06.07

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 10.06.2007 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 16.03.2011 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen