Laden...

Gleichungssystem richtig parsen

Erstellt von Noobie93 vor 9 Jahren Letzter Beitrag vor 9 Jahren 2.238 Views
Thema geschlossen
N
Noobie93 Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren
Gleichungssystem richtig parsen

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

F
10 Beiträge seit 2014
vor 9 Jahren

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.

N
Noobie93 Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren

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.

F
10 Beiträge seit 2014
vor 9 Jahren

Wie genau hast du das denn in der Konsole gemacht. Das musst du nur als graphische Eingabe umsetzen.

16.835 Beiträge seit 2008
vor 9 Jahren

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

N
Noobie93 Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren
     
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?

F
10 Beiträge seit 2014
vor 9 Jahren

Hier der erste Eintrag bei Google für "C# Gleichung parsen": Parser für mathematische Formeln

N
Noobie93 Themenstarter:in
7 Beiträge seit 2014
vor 9 Jahren

Wenn folgende Eingabe ist
Muss ich das dann nicht splitten?
Kann mir jemand sagen wie ich den Code in diesem Fall schreibe?
Lg

F
10 Beiträge seit 2014
vor 9 Jahren

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.

Hinweis von herbivore vor 9 Jahren

Es handelt sich wohl um eine TextBox, nicht um eine ListBox. An die einzelnen Gleichungen kommt man leicht z.B. mit String.Split.

2.207 Beiträge seit 2011
vor 9 Jahren

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

Thema geschlossen