Autor |
Beitrag |
TheSoul
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mo 24.08.09 13:46
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:
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 24.08.09 13:50
Hallo und  !
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 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
TheSoul 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mo 24.08.09 13:54
Danke
Mein Problem ist dass ich nicht mehr weiter weiss.
Ich verlange von niemandem meine Hausaufgaben zu machen  Brauche nur einige kleine Tipps wie man diese Aufgabe angehen kann.
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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? 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
TheSoul 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mo 24.08.09 13:58
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
      

Beiträge: 4796
Erhaltene Danke: 1059
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Mo 24.08.09 14:18
Stichwort: Schleife (while, for oder foreach)
|
|
TheSoul 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: 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
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: Mo 24.08.09 14:53
Hallo und noch
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
      
Beiträge: 43
|
Verfasst: 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 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mo 24.08.09 16:14
Inzwischen habe ich die Aufgabe abgeschlossen.  Danke an die, die versucht haben mir zu helfen.
Hier meine Lösung:
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
      
Beiträge: 43
|
Verfasst: Mo 24.08.09 16:32
Nur eine Sache...
Warum
C#-Quelltext 1: 2:
| int aRest = a % 2; if (aRest > 0) |
und nicht einfach:
C#-Quelltext
Gruß
|
|
TheSoul 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mo 24.08.09 16:43
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: 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 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Di 25.08.09 08:14
|
|