Mehrfachaddition
-
Guten Abend Community,
ich hätte eine Frage bezüglich meiner Aufgabe. Das Programm soll eine Eingabe wie z.B. "3+6+7+4" oder "3+4+214+523+6" zulassen und ein Ergebnis ausgeben. Ich dachte man könnte da mit einer for-Schleife ran. Da ich aber noch nicht ganz dahinter gekommen bin, könnte mir jemand vielleicht einen Denkanstoß geben?
Mfg Andreas.
-
BlackPeace schrieb:
Guten Abend Community,
ich hätte eine Frage bezüglich meiner Aufgabe. Das Programm soll eine Eingabe wie z.B. "3+6+7+4" oder "3+4+214+523+6" zulassen und ein Ergebnis ausgeben. Ich dachte man könnte da mit einer for-Schleife ran. Da ich aber noch nicht ganz dahinter gekommen bin, könnte mir jemand vielleicht einen Denkanstoß geben?
Mfg Andreas.Das kann man auf viele verschiedene Arten lösen.
Pseudo-Code:
int result = 0; string buf; for (int i = 0; i < str.length(); ++i) { if (str[i] == '+') { result += System.Convert.ToInt32(buf); buf = ""; } else { buf += str[i]; } }
-
Ahh, das nimmt natürlich die letzte Zahl nicht mit...
Schau dir das mal an:
http://dotnetperls.com/string-split
-
..... schrieb:
Ahh, das nimmt natürlich die letzte Zahl nicht mit...
Sollte gehen wenn man "i <= str.length" schreibt.
-
FreakY<3Cpp schrieb:
..... schrieb:
Ahh, das nimmt natürlich die letzte Zahl nicht mit...
Sollte gehen wenn man "i <= str.length" schreibt.
Dann bekommst du aber eine
IndexOutOfRangeException
beistr[i]
Ich denke auch, dass es am einfachsten ist, ein
String.Split
auszuführen mit'+'
. Danach auf alle Elemente einString.Trim
ausführen, als nächtesDouble.Parse
mit dem Element aufrufen und das ganze einer Gesamtsumme dazurechnen.Grüssli
-
Realisierung über string[] bla = Console.ReadLine().Split(...) sollte möglich sein. Dann foreach(string blub in bla) benutzen und nach Konvertierung (mit int.Parse(blub) addieren. Damit umgehst du dir die for-Schleife und hast zusätzlich noch echt .Net benutzt.
-
Hier mal pseudo wie die Lösung wäre (Genau wie die anderen es meinen)
string text = "3+4+214+523+6"; string[] numbers = text.Split(new char[] { '+' }, StringSplitOptions.RemoveEmptyEntries); int summary = 0; foreach (string number in numbers) { int value = 0; if (int.TryParse(number, out value)) { summary += value; } }
Wichtig ist, kein blankes "Parse", man sollte vorher überprüfen ob eine Konvertierung klappt.
Im falle von double Werten sollte noch die Culture mit angegeben werden.
-
CSL schrieb:
Wichtig ist, kein blankes "Parse", man sollte vorher überprüfen ob eine Konvertierung klappt.
Im falle von double Werten sollte noch die Culture mit angegeben werden.Wieso? Damit eliminierst du jegliche Fehler, was ich nicht gerade für sinnvoll halte. Nun kann man auch sowas eingeben und es gibt ein korrektes Resultat aus:
"sef+++sf+es+efs+++esf+es+es+fes+fes+fes++ef+5" → Resultat: 5Oder auch das geht:
"Ich bin ein Text, den niemand kontrolliert und deswegen habe ich ein korrektes Resultat! Ist das nicht toll?" → Resultat: 0Ich würde auch auf die
StringSplitOptions.RemoveEmptyEntries
verzichten. Man soll Fehler schliesslich nicht schlucken, sondern behandelnGrüssli