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);
}
}
}
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 .
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!
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!
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.
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.
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.
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 .
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?
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?
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?