Im Textfeld sollen beliebig viele Gleichungen z.B.: 4x-5y+6z=23 eingegeben werden und unter lösungen sollte dann: x=, y=, z=, erscheinen.
Nun meine Frage wie löse ich das am besten?
In der Console habe ich die Werte einzeln eingeben lassen und dann in einer Matrix ausgeben lassen.
Doch wie mache ich das nun?
und dann muss ich noch das Gauß'sche Eliminationsverfahren anwenden.
Kann mir jemand helfen?
Lg
Noobie93
Du kannst die Gleichungen durch ein Steuerzeichen (z.B.: 😉 trennen lassen und dann anhand dieses Zeichens die einzelnen Formeln erhalten.
Oder eine Formel eingeben lassen und durch einen Button in eine ListBox einfügen lassen. Du kannst dann auf die Gleichungen aus der ListBox pro Zeile zugreifen.
Um die Variablen zu erhalten kannst du in jeder Gleichung nach Buchstaben suchen.
Die Ausgabe würde ich auch wieder per ListBox steuern. Pro Zeile eine Variable mit Lösung.
Ja aber leider weiß ich nicht wie viel unbekannte der User hat und somit steht ihm das ganze alphabet zur Verfügung.
Deshalb ist es schwer etwas Vorzudefinieren denn Unbekannte=Gleichungen.
Wie genau hast du das denn in der Konsole gemacht. Das musst du nur als graphische Eingabe umsetzen.
Ganz übliches Problem.. wird ja ständig in der Schule gebracht. Genug Lösungen im Netz zu finden.
darunter zB Taschenrechner: String mit Zahlen und Operatoren aufteilen & verarbeiten
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
public void show()
{
anz = int.Parse(Console.ReadLine());
for (int i = 0; i < anz; i++)
{
for (int j = 0; j < anz + 1; j++)
{
Console.Write("M[{0},{1}]=", i, j);
a[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
}
Mittels anz wurde die Anzahl der Gleichungen und somit der Unbekannten bestimmt und die dann in einer Matrix ausgegeben.
Ja schon klar das ich das parsen muss aber wie mach ich das in folgendem fall:
3x+4y-5z=26?
Hier der erste Eintrag bei Google für "C# Gleichung parsen": Parser für mathematische Formeln
Wenn folgende Eingabe ist
Muss ich das dann nicht splitten?
Kann mir jemand sagen wie ich den Code in diesem Fall schreibe?
Lg
Anzahl der Gleichungen: int anz = listBox1.Items.Count;
Erste Gleichung: string gleichung1 = listBox1.Items[0].ToString();
Letzte Gleichung: string gleichungx = listBox1.Items[anz-1].ToString();
Edit: Über eine Schleife kannst du deine Matrix dann wieder füllen.
Es handelt sich wohl um eine TextBox, nicht um eine ListBox. An die einzelnen Gleichungen kommt man leicht z.B. mit String.Split.
Kann mir jemand sagen wie ich den Code in diesem Fall schreibe?
Hallo Noobie93,
nein, das kann zwar sicher jemand (wie auch gepostet), sollte aber nicht der Sinn sein.
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 4.
Lass uns nicht deine Arbeit machen. Zu deinem Problem wurde hier schon viel gesagt. MMn sind das normale String-Operationen, die wir als bekannt vorraussetzen, da es Grundlagen sind.
Daher ist hier erstmal zu.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck