while (operatorWert != ' ')
{
int index = gleichung.IndexOf(operatorWert);
Console.WriteLine("Der Operator ist an Stelle {0}", index);
int positionVorherrigerOperator = GetVorherrigerOperator(gleichung, index);
string wert1 = "";
for (int i = index - 1; i >= 0; i--)
{
if (i > positionVorherrigerOperator)
{
wert1 = gleichung + wert1;
}
}
// Operator suchenl
Console.WriteLine(wert1);
int positionNaechsterOperator = GetNaechsterOperator(gleichung, index + 1);
string wert2 = "";
for (int index2 = index + 1; index2 < gleichung.Length; index2++)
{
if (index2 < positionNaechsterOperator || positionNaechsterOperator == -1)
{
wert2 = wert2 + gleichung[index2];
}
}
Console.WriteLine(wert2);
// jetzt versuchen wir zu rechnen
double zahl1 = double.Parse(wert1);
double zahl2 = double.Parse(wert2);
gleichung = gleichung.Replace(wert1 + operatorWert + wert2, ergebnis.ToString());
operatorWert = GetOperator(gleichung);
}
//Ergebnis ausgeben plus Rechnung
Console.WriteLine("Ergebnis: " + gleichung);
Console.WriteLine("Wollen sie noch eine Rechnung rechnen, dann schreiben sie j wenn sie keine weitere Rechnung rechen wollen n");
Console.ReadKey();
}
//switch
private static double Rechne(double zahl1, double zahl2, char operatorWert)
{
switch (operatorWert)
{
case '*': return zahl1 * zahl2;
case '/': return zahl1 / zahl2;
case '+': return zahl1 + zahl2;
case '-': return zahl1 - zahl2;
}
throw new ArgumentException("da hat was nicht geklappt");
}
//Methode
private static char GetOperator(string gleichung)
{ //mal rechnung
for (int i = 0; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (zeichen == '*' && IsOperator(zeichen, zeichen2))
{
return '*';
Frage
Max01
Hey, könnte jemand mir netterweise Zeigen was ich verändern muss, damit ich die das Programm nochmal laufen lassen kann, ohne es zu beennden.
Beste Grüße und danke schon mal
Max Schlensag
namespace Taschenrechner2
{
public class Program
{
public static void Main(string[] args)
{
// Benutzer begrüßen
Console.WriteLine("Hallo Benutzer, bitte Formel eingeben");
//string gleichung = "13*-3";
// string gleichung = "12*13";
string gleichung = Console.ReadLine();
// nächsten Operator ermitteln
char operatorWert = GetOperator(gleichung);
while (operatorWert != ' ')
{
int index = gleichung.IndexOf(operatorWert);
Console.WriteLine("Der Operator ist an Stelle {0}", index);
int positionVorherrigerOperator = GetVorherrigerOperator(gleichung, index);
string wert1 = "";
for (int i = index - 1; i >= 0; i--)
{
if (i > positionVorherrigerOperator)
{
wert1 = gleichung + wert1;
}
}
// Operator suchenl
Console.WriteLine(wert1);
int positionNaechsterOperator = GetNaechsterOperator(gleichung, index + 1);
string wert2 = "";
for (int index2 = index + 1; index2 < gleichung.Length; index2++)
{
if (index2 < positionNaechsterOperator || positionNaechsterOperator == -1)
{
wert2 = wert2 + gleichung[index2];
}
}
Console.WriteLine(wert2);
// jetzt versuchen wir zu rechnen
double zahl1 = double.Parse(wert1);
double zahl2 = double.Parse(wert2);
double ergebnis = Rechne(zahl1, zahl2, operatorWert);
gleichung = gleichung.Replace(wert1 + operatorWert + wert2, ergebnis.ToString());
operatorWert = GetOperator(gleichung);
}
//Ergebnis ausgeben plus Rechnung
Console.WriteLine("Ergebnis: " + gleichung);
Console.WriteLine("Wollen sie noch eine Rechnung rechnen, dann schreiben sie j wenn sie keine weitere Rechnung rechen wollen n");
Console.ReadKey();
}
//switch
private static double Rechne(double zahl1, double zahl2, char operatorWert)
{
switch (operatorWert)
{
case '*': return zahl1 * zahl2;
case '/': return zahl1 / zahl2;
case '+': return zahl1 + zahl2;
case '-': return zahl1 - zahl2;
}
throw new ArgumentException("da hat was nicht geklappt");
}
//Methode
private static char GetOperator(string gleichung)
{ //mal rechnung
for (int i = 0; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (zeichen == '*' && IsOperator(zeichen, zeichen2))
{
return '*';
}
if (zeichen == '/' && IsOperator(zeichen, zeichen2))
{
return '/';
}
}
//geteilt rechnung
for (int i = 0; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (zeichen == '/' && IsOperator(zeichen, zeichen2))
{
return '/';
}
}
//plus rechnung
for (int i = 0; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (zeichen == '+' && IsOperator(zeichen, zeichen2))
{
return '+';
}
}
//minus rechung
for (int i = 0; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (zeichen == '-' && IsOperator(zeichen, zeichen2))
{
return '-';
}
}
return ' ';
}
private static int GetNaechsterOperator(string gleichung, int position)
{
int result = -1;
for (int i = position; i < gleichung.Length; i++)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (IsOperator(zeichen, zeichen2))
{
result = i;
break;
}
}
return result;
}
//Zweiten Operator finden
private static int GetVorherrigerOperator(string gleichung, int index)
{
int result = -1;
for (int i = index - 1; i >= 0; i--)
{
char zeichen = gleichung;
char zeichen2 = i > 0 ? gleichung[i - 1] : ' ';
if (IsOperator(zeichen, zeichen2))
{
result = i;
break;
}
}
return result;
}
// Zum erkennen, dass es kein Operator ist
private static bool IsOperator(char zeichen, char zeichen2)
{
if (zeichen == '*' || zeichen == '/' || zeichen == '+' || zeichen == '-')
{
if (zeichen2 == '*' || zeichen2 == '/' || zeichen2 == '+' || zeichen2 == '-' || zeichen2 == ' ')
{
return false;
}
return true;
}
return false;
}
}
}
Link zu diesem Kommentar
Auf anderen Seiten teilen
18 Antworten auf diese Frage
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.