Entwickler-Ecke
Basistechnologien - Ungerade und Gerade Summen
TheSoul - Mo 24.08.09 13:46
Titel: Ungerade und Gerade Summen
Hallo zusammen.
Ich bin neu hier und befasse mich seit kurzem durch die Schule mit C#. Ich habe eine Aufgabe begonnen, leider komme ich da nicht weiter.
Die Aufgabe lautet wie folgt:
Schreibe ein Konsolenprogramm,welches über den Inputstream mehrere Zahlen einliest bis die Zahl 0 eingegeben wurde. Anschliessend diese Zahlen als gerade und ungerade Zahlen summiert wiedergiebt.
Das heisst
zB Input:
1
5
8
12
Output:
Ungerade Summe: 6
Gerade Summe:20
Ich habe einbisschen angefangen zu Coden und bin im Moment nicht so weit.
Hier mein Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO;
namespace aufgabe4._2 { class Program { public static void Main(string[] args) {
Console.Write("Hallo, "); Console.WriteLine("Dieses Programm rechnet die Summe der Geraden und Ungeraden"); Console.WriteLine("Geben Sie eine Zahl ein"); string x = Console.ReadLine(); int a = Convert.ToInt32(x); int aRest = a % 2;
if (aRest > 0) { Console.Write("Die Zahl "); Console.Write(a); Console.WriteLine(" ist ungerade"); Console.Write("Die Summe der ungeraden "); Console.Write(a); } else { Console.Write("Die Zahl "); Console.Write(a); Console.WriteLine(" ist gerade"); Console.Write("Die Summe der geraden "); Console.Write(a); } Console.ReadLine();
} } } |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Christian S. - Mo 24.08.09 13:50
Hallo und :welcome:!
Was ist denn jetzt genau das Problem, bei dem wir Dir helfen sollen? :-)
Grüße
Christian
P.S.: Bei konkreten Problemen helfen wir Dir gerne weiter, wir werden Dir aber nicht Deine Hausaufgaben machen ;)
TheSoul - Mo 24.08.09 13:54
Danke :wink:
Mein Problem ist dass ich nicht mehr weiter weiss. :roll:
Ich verlange von niemandem meine Hausaufgaben zu machen :) Brauche nur einige kleine Tipps wie man diese Aufgabe angehen kann.
Christian S. - Mo 24.08.09 13:55
Jetzt wissen wir immer noch nicht, wo Du genau nicht weiter kommst. Welchen Teil der Aufgabe versuchst Du zu machen und auf welche Hürde stößt Du da, die Du nicht überwinden kannst? :-)
TheSoul - Mo 24.08.09 13:58
:D
Den Anfang habe ich bereits. Das Konsolenprogramm trennt die geraden und ungeraden Zahlen. Wie kann ich jetzt die geraden und ungeraden summieren und getrennt wiedergeben? Und was muss ich schreiben, damit das Programm erst wenn ich die 0 eingebe die Zahlen zusammenzählt?
PS: Habe erst letzte Woche mit C# begonnen
Th69 - Mo 24.08.09 14:18
Stichwort: Schleife (while, for oder foreach)
TheSoul - Mo 24.08.09 14:26
danke für die rasche antwort.
kannst du mir auch noch sagen wo ich dies ungefähr einsetzen muss?
JüTho - Mo 24.08.09 14:53
Hallo und noch :welcome:
Fast alles, was du in deinem ersten Beitrag als Code gebracht hast, gehört in diese Schleife (vorzugsweise do-while). Das kannst du dir durch "Formulierungen in normaler Sprache" selbst erklären.
Lediglich Deklarationen von Variablen, die du vorher und nachher benötigst, müssen außerhalb der Schleife stehen. Vor allem brauchst du (eine andere deiner Fragen) je eine Variable für "Summe aller geraden" und "Summe aller ungeraden". Sinnvollerweise wird jede eingegebene Zahl sofort geprüft und summiert (sonst bräuchte man unnötige Zwischenspeicher für alle Zahlen).
Ich hoffe, das führt weiter.
Jürgen
InCoBra - Mo 24.08.09 15:03
Die Schleife muss um die Einlesefunktion...
C#-Quelltext
1: 2: 3: 4: 5:
| String input = ""; while (input != "0") { } |
oder wenn du eh in Integer umwandelst:
C#-Quelltext
1: 2: 3: 4: 5:
| int input = -1; while (input != 0) { } |
Edit: Zu langsam...
TheSoul - Mo 24.08.09 16:14
Inzwischen habe ich die Aufgabe abgeschlossen. :idea: :D Danke an die, die versucht haben mir zu helfen.
Hier meine Lösung:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| using System;
namespace aufgabe4._2 { class Program { public static void Main(string[] args) { Aufgabe4(); }
private static void Aufgabe4() { int gerade = 0, ungerade = 0;
Console.Write("Hallo, "); Console.WriteLine("Dieses Programm rechnet die Summe der Geraden und Ungeraden"); Console.WriteLine("Geben Sie eine Zahl ein");
string x = ""; while ((x = Console.ReadLine()) != "0") { int a = Convert.ToInt32(x); int aRest = a % 2;
if (aRest > 0) { ungerade += a;
}
else { gerade += a; } }
string ausgabe = string.Format("Die Summe der ungeraden: {0}, Summe der geraden: {1} ", ungerade, gerade); Console.Out.WriteLine(ausgabe);
Console.ReadLine();
} } } |
Für Fragen stehe ich ihnen gerne zur Verfügung. Ihr könnt mir auch eine PN schreiben.
InCoBra - Mo 24.08.09 16:32
Nur eine Sache...
Warum
C#-Quelltext
1: 2:
| int aRest = a % 2; if (aRest > 0) |
und nicht einfach:
Gruß
TheSoul - Mo 24.08.09 16:43
InCoBra hat folgendes geschrieben : |
Nur eine Sache...
Warum
C#-Quelltext 1: 2:
| int aRest = a % 2; if (aRest > 0) |
und nicht einfach:
Gruß |
Hab ich so übernommen. Anfänger halt. :oops:
JüTho - Mo 24.08.09 16:58
Und nun komme ich noch mit meinem Standard-Vorschlag: Statt Convert.ToInt32 ist besser
int.TryParse zu verwenden. Was passiert denn, wenn jemand keine Zahl eingibt, sondern Text (und sei es aus Versehen)? Bei Convert gibt es eine Exception, ggf. mit Programmabsturz; bei TryParse gibt es eine Ersatzlösung. Also:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| int a = 0; if( int.TryParse(x, out a) ) { if (a % 2 == 0) gerade += a; else ungerade += a; } else { Console.WriteLine("Falsche Eingabe - keine Zahl"); } |
Gruß Jürgen
TheSoul - Di 25.08.09 08:14
JüTho hat folgendes geschrieben : |
Und nun komme ich noch mit meinem Standard-Vorschlag: Statt Convert.ToInt32 ist besser int.TryParse zu verwenden. Was passiert denn, wenn jemand keine Zahl eingibt, sondern Text (und sei es aus Versehen)? Bei Convert gibt es eine Exception, ggf. mit Programmabsturz; bei TryParse gibt es eine Ersatzlösung. Also:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| int a = 0; if( int.TryParse(x, out a) ) { if (a % 2 == 0) gerade += a; else ungerade += a; } else { Console.WriteLine("Falsche Eingabe - keine Zahl"); } |
Gruß Jürgen |
Danke für die elegante Lösung Jürgen. int.TryParse habe ich zum ersten Mal gesehen. Habe es so übernommen und es funktioniert prima.
Gruss
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!