Max01
-
Gesamte Inhalte
10 -
Benutzer seit
-
Letzter Besuch
Reputationsaktivitäten
-
Max01 reagierte auf Whiz-zarD in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
So, wie der hier steht, kann er gar nicht laufen:
private static char GetOperator(string gleichung) { //mal rechnung for (int i = 0; i < gleichung.Length; i++) { char zeichen = gleichung; [...] } [...] } Der Parameter "gleichung" dieser Methode ist ein string. Die Variable "zeichen" ist aber ein char und dennoch wird Variable mit "gleichung" intialisiert.
char zeichen = gleichung; Beides sind aber unterschiedliche Typen.
-
Max01 reagierte auf KeeperOfCoffee in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
so wie ich das verstanden habe, kommt das mit den Schleifen von seinem Chef.
So wie ich da sehe fehlen hier noch grundlegende Kenntnisse.
Bitte erst mal ein wenig üben, bevor du an dem Rechner weitermachst.
-
Max01 reagierte auf KeeperOfCoffee in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
https://www.codecademy.com/learn/learn-c-sharp
https://docs.microsoft.com/de-de/dotnet/csharp/getting-started/
Lies/Arbeite dich erstmal in die Sprache ein
-
Max01 reagierte auf Whiz-zarD in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Und wenn wir schon beim Thema "Taschenrechner" sind:
Wie man einen Taschenrechner programmiert
-
Max01 reagierte auf Chief Wiggum in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Hallo,
bitte verwende für Programmierfragen auch die passenden Unterbereiche dafür - ich habe den Thread mal richtig einsortiert.
Danke.
-
Max01 reagierte auf KeeperOfCoffee in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Lagere das Zeug aus deiner Main() erstmal ein eine eigene Methode, die dann so lange läuft, wie deine Methode true zurückgibt (also an die Schleife). Ob true oder false zurückkommen entscheidet halt der Benutzer, wenn du abfragst, ob er noch eine Rechnung machen will.
Übrigens: Das hättest du locker in den anderen Thread packen können. Ist schließlich das gleiche Thema.
-
Max01 reagierte auf Whiz-zarD in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Ja. Alles, was in Main() steht.
-
Max01 reagierte auf thereisnospace in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Die Lösung werde ich dir hier nicht präsentieren, aber vielleicht ein etwas anschaulicheres Bild:
solange (Bedingung!=Erfuellt) { Rechne,Rechne,Rechne() wenn (fertiggerechnet) { Bedingung=Erfuellt } ansonsten { Bedingung=NichtErfuellt } }
-
Max01 reagierte auf Kleinrechner in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Solange der Benutzer nicht abbricht, zeigst du ihm du ihm die Starteingabe an, das ganze jetzt noch auf englisch.
-
Max01 reagierte auf Listener in C# code in der Ausgabe auf Nachfrage auf Anfang setzen
Du kannst das Programm solange laufen lassen, wie $answer=false ist. Am Ende des Programms lässt du dann mit einer Eingabe die Varible $answer befüllen. Entweder mit true oder false, je nachdem was dein User eingibt.
Das sollte für so ein Basis-Tutorial denke mal Okay sein.
-
Max01 hat eine Reaktion von thereisnospace erhalten in Gleichungen lösen unter C#
ehre @thereisnospace
-
Max01 reagierte auf thereisnospace in Gleichungen lösen unter C#
Hey du Totengräber, achte mal aufs Datum.
Aber ich bin mal so nett:
http://www.ne555.at/2014/index.php/pc-programmierung/einfuehrung-c/215-programmierbeispiel-quadratische-gleichung.html
-
Max01 reagierte auf flashpixx in Punkt vor Strichrechnung
Warum schreibst Du nicht zuerst einmal Deine komplette Berechnung in einen Syntaxbaum und traversierst diesen dann entsprechend. In den Blättern stehen die Zahlen, in den Knoten die Operatoren. Damit hast direkt Punkt vor Strichrechnung usw, sowie korrekte Klammerverarbeitung?
Phil
-
Max01 reagierte auf kross in Punkt vor Strichrechnung
so sollte es relativ einfach gehen
-eingabe (werte und operanten merken)
-anschließend aus dieser liste die operationen von der höchsten zur kleinsten priorität abarbeiten
-bleibt nurnoch ein wert und keine operation mehr hat man das ergebnis
zu tun
erstmal ein neues leeres form erstellen und 6 buttons adden und code einfügen
das beispielprojekt hat nur addition, multiplikation und potenzieren und als wert nur die zahl 3
-erweitern um ziffern {0..9}/3
-ziffern untereinander zu zahlen zusammenfassen (sind 2 werte an stelle i in der liste ohne rechenoperation benachbart wert=wert*10+wert[i+1], lösche wert[i+1])
-erweitern um subtraktion/division
-fehlerbehandlung (doppelte rechenoptoren abfangen etc)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication5 { public partial class Form1 : Form { private List<Teil> m_teile; public enum operation { plus, minus, mal, durch, hoch, } public Form1() { InitializeComponent(); button1.Text = "3"; button2.Text = "+"; button3.Text = "*"; button4.Text = "^"; button5.Text = "Neu"; button6.Text = "="; m_teile = new List<Teil>(); } private void button1_Click(object sender, EventArgs e) { m_teile.Add(new Teil(3)); } private void button2_Click(object sender, EventArgs e) { m_teile.Add(new Teil(Operation.plus)); } private void button3_Click(object sender, EventArgs e) { m_teile.Add(new Teil(Operation.mal)); } private void button4_Click(object sender, EventArgs e) { m_teile.Add(new Teil(Operation.hoch)); } private void button5_Click(object sender, EventArgs e) { m_teile = new List<Teil>(); } private void button6_Click(object sender, EventArgs e) { //schrittweise aufloesen //erster schritt die ziffern zu zahlen zusammenfassen //!!!!todo im beispiel nur mit einstelligen ziffern gearbeitet //zweiter schritt potenzen ausrechnen //rechten und linken operand + rechenzeichen aus der liste löschen //ergebnis an deren stelle einfügen for (int i = 0; i < m_teile.Count; i++) { if (m_teile[i].Art == Teil.ArtEnum.RechenOperation && m_teile[i].Operation == Operation.hoch) { int erg = (int)Math.Pow(m_teile[i - 1].Wert, m_teile[i + 1].Wert); m_teile[i - 1].Wert = erg; //wert vor dem operand wird überschrieben spart herrauslöschen und anschließendes neu einfügen m_teile.RemoveRange(i, 2); i--;//i um eins verringern da durch das löschen der aktuellen position dort nun ein noch nicht verarbeiteter wert steht } } //dritter schritt multiplizieren (todo dividieren) for (int i = 0; i < m_teile.Count; i++) { if (m_teile[i].Art == Teil.ArtEnum.RechenOperation && m_teile[i].Operation == Operation.mal) { int erg = m_teile[i - 1].Wert * m_teile[i + 1].Wert; m_teile[i - 1].Wert = erg; //wert vor dem operand wird überschrieben spart herrauslöschen und anschließendes neu einfügen m_teile.RemoveRange(i, 2); i--;//i um eins verringern da durch das löschen der aktuellen position dort nun ein noch nicht verarbeiteter wert steht } } //letzter schritt addieren (todo subtrahieren) for (int i = 0; i < m_teile.Count; i++) { if (m_teile[i].Art == Teil.ArtEnum.RechenOperation && m_teile[i].Operation == Operation.plus) { int erg = m_teile[i - 1].Wert + m_teile[i + 1].Wert; m_teile[i - 1].Wert = erg; //wert vor dem operand wird überschrieben spart herrauslöschen und anschließendes neu einfügen m_teile.RemoveRange(i, 2); i--;//i um eins verringern da durch das löschen der aktuellen position dort nun ein noch nicht verarbeiteter wert steht } } //m_teile sollte nurnoch 1 eintrag haben dieser ist das ergebnis MessageBox.Show(m_teile[0].Wert.ToString()); } } public enum Operation { plus, minus, mal, durch, hoch, } public class Teil { private ArtEnum m_art; public ArtEnum Art { get { return m_art; } } private Operation m_operation; public Operation Operation { get { return m_operation; } } private int m_wert; public int Wert { get { return m_wert; } set { m_wert = value; } } public Teil(Operation _op) { m_art = ArtEnum.RechenOperation; m_operation = _op; } public Teil(int _wert) { m_wert = _wert; m_art = ArtEnum.Wert; } public enum ArtEnum { RechenOperation, Wert } } }
-
Max01 reagierte auf flashpixx in Punkt vor Strichrechnung
Meine Postings beziehen sich nicht auf eine Umsetzung in C# sondern um die theoretischen Grundlagen für die Problemlösung
Sicher. Ich verstehe es so, dass eine Konsolenanwendung ausreichend ist, obwohl man ja auch ein Form machen kann, in dem man die zu berechnende Funktion auch als String in ein Textfeld eingeben kann. Die Progammlogik bleibt gleich
Phil