+ Antworten
Ergebnis 1 bis 3 von 3

[Delphi] Berechnung von Schittpunkten

Eine Diskussion über [Delphi] Berechnung von Schittpunkten im Forum Hausaufgaben. Teil des Reallife-Bereichs; Hallo UF Gemeinde, Ich bräuchte mal Hilfe bei einer Infoaufgabe und zwar Folgende: "Durch y = mx + n und ...

  1. #1
    Mainforum-Moderator
    Avatar von RoToR
    Registriert seit
    21.02.2008
    Ort
    Wartenburg
    Alter
    24
    Beiträge
    5.775
    Name
    Julian
    Nick
    RoToRone
    Clans
    tbR*

    [Delphi] Berechnung von Schittpunkten

    Hallo UF Gemeinde,
    Ich bräuchte mal Hilfe bei einer Infoaufgabe und zwar Folgende:

    "Durch y = mx + n und y = ax² + bc + c sind die Gleichungen einer Geraden und einer Parabel der Ebene gegeben. Es ist ein Programm zur Berechnung gemeinsamer Punkte zu verfassen. Dieentsprechenden Konstanten m,n,a,b,c sind einzulesen. Spezialfälle bezüglich der gegenseitigen Lage sind zu beachten. Beide Graphen sind in ein Koordinatensystem zu zeichnen. Die Schnittpunkte sollen besonders hervorgehoben werden."

    Ich hab mich schon einmal im Internet erkundigt und ein ähnliches Programm gefunden, dass ich leicht abgeändert habe und das die Bedingungen zum Teil erfüllt. Allerdings ist das Problem, dass es nur den Schnittpunkt zweier Geraden berücksichtigt und desweiteren nur die Konstanten x und y einzulesen sind. Hier mal veranschaulicht:

    Code:
    unit ugeraden;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Buttons;
    
    type
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;
        lthema: TLabel;
        leingaben: TLabel;
        lm1: TLabel;
        ln1: TLabel;
        lm2: TLabel;
        ln2: TLabel;
        em1: TEdit;
        en1: TEdit;
        em2: TEdit;
        en2: TEdit;
        lspunkt: TLabel;
        lspunktende: TLabel;
        ex: TEdit;
        ey: TEdit;
        bberechnen: TButton;
        laussage: TLabel;
        procedure bberechnenClick(Sender: TObject);
      private
        { Private-Deklarationen}
      public
        { Public-Deklarationen}
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.DFM}
    
    procedure TForm1.bberechnenClick(Sender: TObject);
    VAR m1,m2,n1,n2 : REAL;
    
     PROCEDURE Wertuebergabe;
     BEGIN
       m1:=STRTOFLOAT(em1.text);
       n1:=STRTOFLOAT(en1.text);
       m2:=STRTOFLOAT(em2.text);
       n2:=STRTOFLOAT(en2.text);
     END;
    
     PROCEDURE Editfelder_leer;
     BEGIN
      ex.text:='-';
      ey.text:='-';
     END;
    
     PROCEDURE GLage(txt:STRING);
     BEGIN
      laussage.caption:=txt;
     END;
    
     PROCEDURE Schnittpunkt(m1,m2,n1,n2:REAL; VAR xs,ys:REAL);
     BEGIN
      xs:=(n2-n1)/(m1-m2);
      ys:=m1*xs+n1;
     END;
    
     PROCEDURE Verarbeitung;
     VAR xs,ys: REAL;
     BEGIN
      IF m1<>m2 THEN
                 BEGIN
                  Schnittpunkt(m1,m2,n1,n2,xs,ys);
                  ex.text:=FLOATTOSTR(xs);
                  ey.text:=FLOATTOSTR(ys);
                  GLage('Geraden schneiden sich');
                 END
                ELSE
                 IF n1<>n2 THEN
                            BEGIN
                             Editfelder_leer;
                             GLage('Geraden sind parallel');
                            END
                           ELSE
                            BEGIN
                             Editfelder_leer;
                             GLage('Geraden sind identisch');
                            END;
     END;
    
    begin
    {Wertübergabe von den Editorfeldern an lokale Variablen}
     Wertuebergabe;
    {Verarbeitung}
     Verarbeitung;
    end;
    
    end.
    Meine Fragen nun:
    Wie kann man diese Schnittpunkte mit den gesuchten Konstanten m,n,a,b,c beschreiben (es geht schließlich nicht um 2 Geraden, sondern um eine Gerade und eine Parabel)?
    Wie kann ich das Problem mathematisch beschreiben?
    Wie Zeichne ich das Programm und vor allem wie krieg ich das Programm dazu, die Schnittpunkte besonders hervorzuheben?

    Vieleicht kennt sich ja jemand mit Delphi aus

    Für Hilfe wär ich dankbar,
    mfg RoToR

  2. #2
    Feldwebel
    Avatar von Golan
    Registriert seit
    03.12.2007
    Alter
    30
    Beiträge
    1.339
    Kenne mich leider mit Delphi nicht aus, aber das hier wäre das mathematische Vorgehen:

    Es gibt drei Möglichkeiten für Schnittpunkte:
    a) Kein Schnittpunkt
    b) Ein Schnittpunkt
    c) Zwei Schnittpunkte

    Die direkte Lösung geht über gleichsetzen:
    y1=y2
    mx+n=ax^2+bx+c
    ax^2+(b-m)x+(c-n)=0
    =>
    a) (b-m)^2-4*a*(c-n) < 0
    keine Lösung/Schnittpunkt
    b) (b-m)^2-4*a*(c-n) = 0
    eine Lösung/Schnittpunkt
    x0=(m-b)/2a
    c) (b-m)^2-4*a*(c-n) > 0
    zwei Lösungen/Schnittpunkte
    x1/2=(m-b) ± sqrt{(b-m)^2-4*a*(c-n)}/2a

    Es ist vielleicht auch angebracht, davor zu Prüfen, ob a ungleich Null ist, sonst ergibt sich eine andere Konstellation:
    a) ein Schnittpunkt
    b) kein Schnittpunkt
    c) unendlich Schnittpunkte

    a) m≠b
    x0=(c-n)/(m-b)
    b) m=b, n≠c
    Nüschts!
    c) m=b, n=c
    y1=y2

  3. #3
    Mainforum-Moderator
    Avatar von RoToR
    Registriert seit
    21.02.2008
    Ort
    Wartenburg
    Alter
    24
    Beiträge
    5.775
    Name
    Julian
    Nick
    RoToRone
    Clans
    tbR*
    Vielen Dank, dass hilft mir schonmal ein gutes Stück weiter

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •