Autor Beitrag
interessierter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 27.04.12 22:23 
Hallo liebe Forumgemeinde

Ich habe ein kleines Problem bei meinem Übungsprojekt in c# (Konsolenprogramm)

Projekt:
- Rechner merkt sich via Random eine Zahl zwischen 1 und 10 und gibt sie nicht aus
- User muss eine Zahl zwischen 1 und 10 eingeben und erhält dann Punkte

Punkteverteilung:
Wenn Eingabe grösser als Randomzahl = 0 Punkte
Wenn Eingabe kleiner als Random Zahl = 1 Punkt
Wenn Eingabe gleich Randomzahl = 2 Punkte
WriteLine Erreichte Punktzahl in dieser Runde

Man kann beliebig viele Runden spielen bis man statt eienr Zahl exit eingibt.

Bis hierhin funzt alles.

Nun zu meinem Problem:
Ich will die Punkte in jeder Runde addieren, so das ich am Schluss die erreichte Gesamtpunktzahl ausgeben kann. Jetzt zählt es nur immer die Punkte in der laufenden Runde.

Hier ein Beispiel wie ich versucht habe das Problem zu lösen.

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:
static void main
{
while (true)
{

Zahleingeben:

Random random = new Random();
int Zahl = random.Next(110);


Console.WriteLine("zahl eingeben");
string eingabe;
eingabe = Console.ReadLine();
int x = int.Parse(Eingabe);

int y = 0//erreichte Punktzahl in laufender Runde

if (x > Zahl)
{
y = y + 0;
}
if (x < Zahl)
{
y = y + 1;
{
if (x == Zahl)
{
y = y + 2
}

Console.WriteLIne(x + " Punkte");

goto Zahleingeben;

}
}
}
}


Wie kann ich die erreichte Punktzahl jeweils speichern und am Schluss das Total ausgeben?

Grüsse
interessierter
Troubadix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 28
Erhaltene Danke: 9

WIN 7
C# (VS2010 Express)
BeitragVerfasst: Fr 27.04.12 23:04 
Hallo,

in Zeile 17 wird deine Variable y die deine Punkte zählt ja immer wieder auf 0 geschrieben.

Du musst y vor deinem Label Zahleingeben definieren damit sie nicht wieder überschrieben wird.

Übrigens ist die Verwendung von goto ganz schlechter Stil. Gleich wieder abgewöhnen! Zumal es hier auch unnötig wäre da dein while(true) ohnehin immer wiederholt. Wenn Du das goto und dein Label raus nimmst musst du y allerdings noch weiter oben definieren (vor dem while).

Gruß
Troubadix

Für diesen Beitrag haben gedankt: interessierter
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Fr 27.04.12 23:23 
Danke viel mal, habe das goto entfernt und die variablen y und z vor dem while definiert.

Es klappt auch :)

Aber etwas verstehe ich nicht. Der Code läuft ja von oben nach unten durch. Ab dem while (true) wiederholt er ja das innerhalb von while (true). Wenn ich jetzt die variablen y und z vor den while true definiet habe, wieso zählt es die Punktzahl zusammen? Meinem Verständis nach fängt das Programm immerwieder ab while (true) an und nicht von gantz oben. Sonst müsste ja alles oberhalb while (true) auch ausgeführt werden.

Kannst mir das jemand erklären?
Troubadix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 28
Erhaltene Danke: 9

WIN 7
C# (VS2010 Express)
BeitragVerfasst: Sa 28.04.12 12:38 
user profile iconinteressierter hat folgendes geschrieben Zum zitierten Posting springen:
Meinem Verständis nach fängt das Programm immerwieder ab while (true) an und nicht von gantz oben.

Das hast Du schon ganz richtig erkannt.

user profile iconinteressierter hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich jetzt die variablen y und z vor den while true definiet habe, wieso zählt es die Punktzahl zusammen?

Weil Du innerhalb deiner Schleife y = y + 1 etc. rechnest. Wie es ja auch richtig ist.

Bei der Definition sagst du ja nur: Ich brauche speicher für eine Variable namens y vom Typ int, bitte mit 0 vorbelegen.

Später änderst Du dann den Inhalt der Variable, dazu brauchst du sie aber nicht neu zu definieren, da sie ja schon bekannt ist.

Gruß
Troubadix

Für diesen Beitrag haben gedankt: interessierter