/// <summary> /// Gibt die vereinfachten Terme in der Textbox aus /// </summary> private void EinfacheAusgabe() { Term[] vereinfachteTerme; QuineMcCluskey qmc; var tempString = ""; // TODO: Run background TASK with cancellation token //var thread = new System.Threading.Thread(Waiting.Wait); //thread.Start(); // Für jede Ausgangsvaribale den Term vereinfachen for (var i = 0; i < fTabelle.AnzahlAusgabevariablen; i++) { // Terme auslesen und vereinfachen qmc = new QuineMcCluskey(fTabelle.GibMinterme(i)); vereinfachteTerme = qmc.Vereinfache(); // Vereinfachten Term in den temporären String schreiben tempString += Properties.Settings.Default.ausChar + (i + 1).ToString() + " = "; tempString += vereinfachteTerme[0].ToString(); for (var j = 1; j < vereinfachteTerme.Length; j++) { tempString += "+" + vereinfachteTerme[j].ToString(); } tempString += "\r\n"; } //System.Threading.Thread.Sleep(100); //thread.Abort(); // Text in die Textbox schreiben textBoxAusgabe.Text = tempString; }
private void SubBerechnePrimimplikanten(out QuineMcCluskey qmc, out List <Term> primimplikanten) { qmc = new QuineMcCluskey(grade.Count - 1); primimplikanten = new List <Term>(); for (var i = 0; i < grade.Count; i++) { foreach (var term1 in grade[i]) { // Bis auf die größten Grad if (i < (grade.Count - 1)) { foreach (var term2 in grade[i + 1]) { // Alle Elemente des aktuellen Grades mit denen des nächsthöheren Grades vergleichen if (term1.IstAehnlichWie(term2)) { // Ähnliche Terme zusammenfassen und als keine Primimplikanten markieren qmc.TermHinzufuegen(term1 + term2); term1.Ist_Primimplikant = false; term2.Ist_Primimplikant = false; } } } // Falls der Term Primimplikant ist if (term1.Ist_Primimplikant) { // den Term der Menge der Primimplikanten hinzufügen primimplikanten.Add(term1); } } } }
/// <summary> /// Zeigt ausführlich die Schritte zur Vereinfachung in einem extra Form /// </summary> private void ErweitereAusgabe() { var vereinfachteTerme = new List <Term[]>(); QuineMcCluskey qmc; var list = new List <List <Term[]> > [fTabelle.AnzahlAusgabevariablen]; // TODO: Run background TASK with cancellation token //var thread = new System.Threading.Thread(Waiting.Wait); //thread.Start(); // Für jede Ausgangsvariable den Term vereinfachen for (var i = 0; i < fTabelle.AnzahlAusgabevariablen; i++) { // Terme auslesen und vereinfachen qmc = new QuineMcCluskey(fTabelle.GibMinterme(i)); list[i] = new List <List <Term[]> >(); vereinfachteTerme.Add(qmc.Vereinfache(ref list[i])); } //System.Threading.Thread.Sleep(100); //thread.Abort(); // Ausgabe im Form var errorIndizes = new List <Int32>(); var form = new AusgabeForm(list, vereinfachteTerme); var just_error = true; while (just_error) { try { form.ShowDialog(); just_error = false; } catch { MessageBox.Show("Leider ist die Darstellung zu groß!", "Darstellung nicht möglich", MessageBoxButtons.OK, MessageBoxIcon.Error); errorIndizes.Add(form.SelectedIndex); form = new AusgabeForm(list, vereinfachteTerme, errorIndizes.ToArray(), form.LastIndex); } } }