Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Summen berechnen
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

Summen berechnen

beantworten | zitieren | melden

Hallo,

Aufgabe und meine vorübergehende Lösung, brauche Hilfe!

Wie bekomme ich es hin dass summe1 nur die geraden und summe2 die ungeraden Zahlen addiert? Da stimmt was nicht in meinem Programm!?


Schreiben Sie ein Programm, das eine Anzahl erfragt. Nachdem die Anzahl eingegeben ist, soll das Programm so viele ganze Zahlen lesen, wie die Anzahl angibt.

Ausgabe sollen zwei Summen sein: Die Summe der Zahlen mit den geraden Indizes und die Summe der Zahlen mit den ungeraden Indizes.

Dabei zählen wir den Index 0 zu den geraden Indizes.

class Program {
		
public static void Main(){
			
		int anzahl = Convert.ToInt32(Console.ReadLine());
	        int summe1=0;
	        int summe2=0;
		int[]zahlen = new int[anzahl];
		
		for(int i=0;i<anzahl;++i) {
		
		zahlen[i] = Convert.ToInt32(Console.ReadLine());

                if (i%2==0)		

		summe1 += zahlen[i]; 
		
		Console.WriteLine(summe1);

                if (i%2==1)
		
		summe2 += zahlen[i]; 
		
		Console.WriteLine(summe2);
}
}
}

....lg
private Nachricht | Beiträge des Benutzers
Tomot
myCSharp.de - Member

Avatar #avatar-2678.jpg


Dabei seit:
Beiträge: 691
Herkunft: Düsseldorf

beantworten | zitieren | melden

[Hinweis] Wie poste ich richtig?
Punkt 4, 5,6
Zitat
Da stimmt was nicht in meinem Programm!?
Was stimmt nicht?

Und wieso lässt du den Index 0 bei deiner Berechnung außen vor?
mit freundlichen Grüßen,
Tomot

Projekte: www.gesellschaftsspieler-gesucht.de
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 849
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo cfc81,

also ersteinmal:
Wie poste ich richtig?

Was denkst du stimmt nicht deinem Programm?

Es verhält sich so wie in der Aufgabe beschrieben.. OK, ein paar erklärende Ausgaben so wie "Summe1 : zahl" wären hübsch gewesen. Und das sich das Program nach der letzten eingabe direkt beendet ist auch nicht schön.. Aber imho funktioniert dein Programm.

edit: @all.. hmm zu spät
@tomot er lässt index 0 imho nicht aussen vor.. warum denkst du das?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von unconnected am .
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

oh sorry für das posting, ich mach es nie wieder :)....

was meinst du mit index 0 außen vor lassen? Versteh ich nicht, sorry....

ist es soweit sonst korrekt?
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1.696
Herkunft: NRW/DE

beantworten | zitieren | melden

Zitat von cfc81
oh sorry für das posting, ich mach es nie wieder :)....

was meinst du mit index 0 außen vor lassen? Versteh ich nicht, sorry....

ist es soweit sonst korrekt?

Na, dass du i=0 setzst und dann mit ++i anfängst bedeutet dass in der Schleife 0 überprungen wurde, ist das nun klar?
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

ähm ok und was muss ich da ändern? und wie bekommt man es hin, dass das Fenster nach der letzten Eingabe sich nicht schließt?

lg
private Nachricht | Beiträge des Benutzers
vbprogger
myCSharp.de - Experte

Avatar #avatar-1820.gif


Dabei seit:
Beiträge: 1.696
Herkunft: NRW/DE

beantworten | zitieren | melden

Console.Readline ... d.h. das Programm wartet auf Eingabe und schliesst sich somit nicht. Wie wäre es, dass du dir mal Grundlagen aneignet? Schau doch mal rein: :rtfm:
Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.
---------
Bemerkung: ich beantworte keine Fragen via PM, denn das Forum soll ja was davon haben!
private Nachricht | Beiträge des Benutzers
Sekkiy
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

Zitat von vbprogger
Na, dass du i=0 setzst und dann mit ++i anfängst bedeutet dass in der Schleife 0 überprungen wurde, ist das nun klar?

erm nein?

++i
oder

i++
wird erst _Nach_ dem Durchlaufen der Schleife aufgerufen.
ich habe es auch extra probiert:

            
            int anzahl = 0;
            for (int i = 0; i < 10; ++i)
            {
                ++anzahl;
                Console.WriteLine(i);
            }
            Console.WriteLine("\n" + anzahl);
            Console.ReadLine();
            anzahl = 0;
            for (int i = 0; i < 10; i++)
            {
                ++anzahl;
                Console.WriteLine(i);
            }
            Console.WriteLine("\n" + anzahl);
            Console.ReadLine();

beide mal wird ausgegeben:
0
1
2
3
4
5
6
7
8
9

10

von daher verstehe ich nicht, warum ihr meint 0 wird übersprungen.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 849
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

ganz genau..
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo zusammen,

auch noch ein paar Worte von mir dazu :D

Grund dafür ist, dass der einzige Unterschied zwischen der Präfixinkrementation (also ++i) und der Postfixinkrementation (also i++) im "Rückgabewert" liegt:


i = 5;
Console.WriteLine(i++); //Gibt "5" aus; i ist 6
i = 5;
Console.WriteLine(++i); //Gibt "6" aus; i ist 6

Da der Wert im Schleifenkopf nicht verwendet wird, macht es keinen Unterschied.

Sähe er hingegen so aus:

for (int i = 0; ++i < lenght; )
würde es tatsächlich einen Unterschied machen.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo cfc81,

bevor wir hier lange spekulieren, schreib doch erstmal, was der Fehler ist. Beachte dabei [Hinweis] Wie poste ich richtig? Punkt 5.

Außerdem geht das alles sehr in Richtung [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

Frage ist einfach nur ob ich mit meiner Version die Aufgabe richtig gelöst habe!?

LG
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo cfc81,

bevor wir jetzt auf gut Glück ja oder nein sagen, ermittelst du das am besten selbst durch einen Test mit verschiedenen Eingabedaten. Vergiss dabei nicht, auch die Behandlung von Fehleingaben zu überprüfen.

herbivore
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat von cfc81
Frage ist einfach nur ob ich mit meiner Version die Aufgabe richtig gelöst habe!?
Nein, wenn man von dieser Aufgabenstellung ausgeht:
Zitat von cfc81
Wie bekomme ich es hin dass summe1 nur die geraden und summe2 die ungeraden Zahlen addiert?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von winSharp93 am .
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

achso nein da habe ich mich wohl falsch ausgedrückt mit diesem Satz, die Aufgabenstellung steht ja in meinem ersten Posting:

Schreiben Sie ein Programm, das eine Anzahl erfragt. Nachdem die Anzahl eingegeben ist, soll das Programm so viele ganze Zahlen lesen, wie die Anzahl angibt.

Ausgabe sollen zwei Summen sein: Die Summe der Zahlen mit den geraden Indizes und die Summe der Zahlen mit den ungeraden Indizes.

Dabei zählen wir den Index 0 zu den geraden Indizes.


lg....
private Nachricht | Beiträge des Benutzers
Hajoseb
myCSharp.de - Member

Avatar #avatar-2670.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Statt des 2. "if" solltest du es mal mit einem "else" versuchen

denn wenn die Abfrage (i%2==0) falsch ist, kann es doch nur das andere sein ...

mfg Hajoseb
"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.”
Anatole France
private Nachricht | Beiträge des Benutzers
markus.bodlos
myCSharp.de - Member



Dabei seit:
Beiträge: 205
Herkunft: Österreich / Steiermark

beantworten | zitieren | melden

@ Hajoseb:

Ja else ist schöner macht aber für die Funktion keinen Unterschied...


mfg Markus
private Nachricht | Beiträge des Benutzers
Hajoseb
myCSharp.de - Member

Avatar #avatar-2670.jpg


Dabei seit:
Beiträge: 309

beantworten | zitieren | melden

Für die Performance und die "logische" Lesbarkeit sehr wohl :evil:
"Zufall ist das Pseudonym Gottes, wenn er nicht selbst unterschreiben will.”
Anatole France
private Nachricht | Beiträge des Benutzers
Sekkiy
myCSharp.de - Member



Dabei seit:
Beiträge: 21

beantworten | zitieren | melden

wie herbivore schon gesagt hat, du must auch überprüfen, ob eine gültige Zahl eingegeben wurde. was passiert, wenn der benutzer bei der Anzahl "-1" oder gar buchstaben oder sonderzeichen eingibt? dein programm stürzt einfach ab. ausserde, der user weiß nicht einmal, was er eingeben soll. Du erwartest als Eingabe eine Zahl, aber sagst es ihm nicht? Du solltest dem User schon sagen was er eingeben soll. Und wiso speicherst du die Zahlen(welche wieder Buchstaben sein könnten, wieder nicht überprüft...) in einem Array? Für diese Aufgabe ist es egal, ob du dir die Zahlen merkst, da du die Summe sowieso gleich addierst und nicht erst im Nachhinein.

Übrigens gibst du nach jeder Zahl Summe1 und Summe2 aus, da du bei den "if" keine Klammern gesetzt hast.

Ich persönlich finde deine Einrückungen schrecklich, einmal eingerückt, einmal nicht... scheint dir wohl ziemlich egal zu sein? Später wirst du dich nichtmehr zurechtfinden. Die "if" sind eingerückt, aber die Befehle nach den "if" nicht... die befehle nach "for" sind nicht eingerückt, aber "for" auch nicht. Du solltest schon einheitlich/übersichtlich programmieren. Siehe hierfür auch die Variablen deklaration.

und statt dem zweiten "if" gehört nunmal ein "else", da "i%2" ENTWEDER "0" ODER "1" sein kann, aber nichts anderes.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Sekkiy am .
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

ok danke erstmal, ich habe soweit alles nach euren Meinungen geändert!

Ihr müsst daran denken, dies ist mein erster Versuch und meine 1.Aufgabe :)...

Nun noch eine Verständnisfrage zur Aufgabe, ist gemeint, dass wenn der Benutzer gerade Zahlen eingibt, diese addiert und wenn ungerade Zahlen eingegeben werden diese in einer 2. Summe addiert werden müssen??Wenn ja, wie muss ich mein Programm dann ändern?
Oder ist meine derzeitige Lösung soweit korrekt (ohne Überprüfung ob gültige Zahl o.ä. eingegeben wurde), dass die Summen abwechselnd addiert werden?

LG....
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

Hallo,

das musst du dir wirklich selbst beantworten können: Was macht die if-Abfrage, welche Bedeutung hat die dort verwendete Variable i, was wird damit gemacht?

Jürgen
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

ja das is mir schon klar, es geht um die Aufgabenstellung! Bei meiner derzeitigen Lösung werden die Summen abwechselnd addiert, aber ist das auch korrekt laut Aufgabenstellung?
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo cfc81,

in der Aufgabenstellung ist von "Zahlen mit geradem Index" und nicht von "geraden Zahlen" die Rede. Das sollte deine Frage beantworten.

herbivore
private Nachricht | Beiträge des Benutzers
cfc81
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

ok dann ist meine Lösung doch korrekt....lg
private Nachricht | Beiträge des Benutzers