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
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
reziproken Wert
was ist das?
2 Antworten
- PaiwanLv 6vor 1 JahrzehntBeste 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)
- WurzelgnomLv 7vor 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.