Autor Beitrag
TheSoul
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: 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:


ausblenden volle Höhe 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 user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 ;)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4796
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 24.08.09 14:18 
Stichwort: Schleife (while, for oder foreach)
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Mo 24.08.09 15:03 
Die Schleife muss um die Einlesefunktion...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
String input = "";
while (input != "0")
{
   // Tue das und das...
}


oder wenn du eh in Integer umwandelst:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
int input = -1;
while (input != 0)
{
   // Tue das und das
}


Edit: Zu langsam...
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: 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:


ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Mo 24.08.09 16:32 
Nur eine Sache...
Warum
ausblenden C#-Quelltext
1:
2:
int aRest = a % 2;
if (aRest > 0)


und nicht einfach:
ausblenden C#-Quelltext
1:
if (a % 2 > 0)					


Gruß
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mo 24.08.09 16:43 
user profile iconInCoBra hat folgendes geschrieben Zum zitierten Posting springen:
Nur eine Sache...
Warum
ausblenden C#-Quelltext
1:
2:
int aRest = a % 2;
if (aRest > 0)


und nicht einfach:
ausblenden C#-Quelltext
1:
if (a % 2 > 0)					


Gruß


Hab ich so übernommen. Anfänger halt. :oops:
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
int a = 0;
ifint.TryParse(x, out a) ) {
    //  ich ziehe den Vergleich "gleich Null" vor
    if (a % 2 == 0)
        gerade += a;
    else
        ungerade += a;
else {
    Console.WriteLine("Falsche Eingabe - keine Zahl");
}

Gruß Jürgen
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Di 25.08.09 08:14 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
int a = 0;
ifint.TryParse(x, out a) ) {
    //  ich ziehe den Vergleich "gleich Null" vor
    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