Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Hilfe! C# Programmieren Schnittpunktrechner 2er Geraden Hilfe!?

Hallo,

Ich muss für die Schule ein Programm schreiben indem ich einmal den Schnittpunkt von 2 Geraden herrausfinde.

Ich finde meinen Fehler nicht. An sich das Programm funktionier zwar aber es ist irgendwie falsch könnt ihr da mal drüberschauen? Es hat nur mit den Formeln zu tun und nicht mit der eigentlichen programmierung.

>>

double p1X, p1Y, p2X, p2Y, p3X, p3Y, p4X, p4Y, m1, m2, b1, b2, y1, y2, x1, x2;

p1X = Convert.ToDouble(textBox1.Text);

p1Y = Convert.ToDouble(textBox2.Text);

p2X = Convert.ToDouble(textBox3.Text);

p2Y = Convert.ToDouble(textBox4.Text);

p3X = Convert.ToDouble(textBox5.Text);

p3Y = Convert.ToDouble(textBox6.Text);

p4X = Convert.ToDouble(textBox7.Text);

p4Y = Convert.ToDouble(textBox8.Text);

m1 = (p2X - p1X) / (p2Y - p1Y);

m2 = (p4X - p3X) / (p4Y - p3Y);

b1 = p1Y - ((p2X - p1X) / (p2Y - p1Y)) * p1X;

b2 = p3Y - ((p4X - p3X) / (p4Y - p3Y)) * p3X;

y1 = (m1 * p1X) + b1;

y2 = (m2 * p3X) + b2;

y1 = y2;

x1 = (p1Y - b1) / m1;

x2 = (p3Y - b2) / m2;

x1 = x2;

label14.Text = "S(" + x1.ToString("0.00") + "|" + y2.ToString("0.00") + ")";

}

<<

Kann mir jemand helfen?

wenn ich das Eingebe bekomme ich falsche Werte herraus.

P1 (-3|4) P2(-1|-1) ; P3(-4|2) P4(6|3) eigentlicher Schnittpunkt (-2,55|2,87) durchs zeichnen rausgefunden.

Schnittpunkt von C# (-4|2)

Bitte helft mir.

Außerdem muss ich wissen wie ich es programmieren kann das bei c# eine Fehlermeldung kommt wenn die Geraden parallel zueinander verlaufen....

pls helft mir, is wichtig

Update:

P1(p1X|p1Y), P2(p2X|p2Y),

P3(p3X|p3Y),P4(p4X|p4Y)

So....

also bis nach dem b2 bin ich mir recht sicher das es richtig ist. y jedoch gleichstellen ist mit sicherheit falsch ich weis aber nicht wie es richtig ist

Update 2:

reziproken Wert

was ist das?

2 Antworten

Bewertung
  • Paiwan
    Lv 6
    vor 1 Jahrzehnt
    Beste Antwort

    Ich schließe mich der Analyse von Wurzelgnom an. Deine Syntax:

    m1 = (p2X - p1X) / (p2Y - p1Y);

    m2 = (p4X - p3X) / (p4Y - p3Y);

    Korrekte Syntax:

    m1 = (p2Y - p1Y) / (p2X - p1X);

    m2 = (p4Y - p3Y) / (p4X - p3X);

    Genau hier stellst du dein Abbruchkriterium rein. Denn sobald m1 und m2 bekannt sind, weißt du, ob die Geraden parallel laufen oder nicht. Bedingung für Parallelität ist m1 = m2 und du setzt das Programm auf END (weiß nicht, wie man das in C# macht. Nimm noch eine Textbox und informiere den User über das Ereignis.

    Die Berechnung von b solltest du auch übersichtlicher gestalten. Da m berechnet ist, nimmst du die einfache Syntax:

    b1 = p1Y - m1*p1X;

    b2 = p2Y - m2*p2X;

    Ich gebe dir noch einige Tips aus meiner eigenen Erfahrung in der Programmierung mit:

    1.) Schreibe einen Comment Block eingangs des Programmes, in dem alle Variablen aufgelistet werde und welche Funktion sie haben

    double p1x : double precision real for x1

    double p2x : double precision real for x2

    So verlierst du nie die Übersicht, was du programmiert hast. Und versehe jeden Programmblock mit Kommentar, in dem geschrieben steht, was dort gemacht werden soll.

    2.) Nutze die Möglichkeit der Mnemonik, das heißt, vergebe Namen für Variablen die dem entsprechen, wofür sie benutzt werden

    double eps : double precision für Epsilon -> Abbruchkriterium

    3. Programmiere strukturiert. Wenn du Schleifen hast, rücke sie ein. So hast du immer eine gute Übersicht über Programmblöcke. die zusammen gehören.

    For x = 1 to 10

    ...k = x*3+k

    ...if k > 20 then

    ......Stop

    ...end if

    End for

    nur mal so als Beispiel.

    Fertige dir vor dem Programmieren ein Struktogramm nach Nassy Schneidermann an. Das hilft dir, deinem Programm schon vor der ersten Programmzeile Struktur zu geben. Infos zu Nassy Schneiderman findest du hier:

    http://de.wikipedia.org/wiki/Nassi-Shneiderman-Dia...

    Struktogramme eignen sich 1000 mal besser zur übersichtlichen Programmierung als Flussdiagramme (Spaghetti Programmierung)

  • vor 1 Jahrzehnt

    Ich vermute erst mal auf Anhieb, dass Du den Anstieg falsch angegeben hast

    (falls ich mit Deiner Symbolik klargekommen bin)

    m1 = (y2 - y1)/(x2 - x1)

    und

    m2 = (y4 - y3)/(x4 - x3)

    Dann ist:

    b1 = y1 - (y2 - y1)/(x2 - x1) * x1

    und

    b2 = y3 - (y4 - y3)/x4 - x3) * x3

    Mir scheint, Du gibst den reziproken Wert ein.

    @Erklärung:

    reziproker Wert = Kehrwert, d.h.

    Du hast Zähler und Nenner vertauscht.

    Zähler: auf dem Bruchstrich

    Nenner: unter dem Bruchstrich

    Paiwan hat Dir das mit Deiner Syntax aufgeschrieben.

Haben Sie noch Fragen? Jetzt beantworten lassen.