Benutzer mit den meisten Antworten
Aufgabe Zahlenraten durch Eingabe einer bestimten Zahl

Frage
-
Hallo,
Ich schon wieder:)
Habe folgendes vor:
Eine Konsolenapplikation, bei der der Computer eine zufällige Zahl erstellt, die der User raten muss.
Habe folgendes Programm entwickelt. Es funktioniert, sieht mir aber ziemlich "komisch" aus. Gibt es da eine kürzere Variantge bzw was kann ich in meinem Code ändern, damit es interessanter aussieht.
Wie schon in meinem alten Thema genannt, haben wir nur If-else, while, do-while, for und Variablen gemacht.
Trotzdem bin ich für alle neuen Dinge offen:)
Danke
string ZahlB; int Zahlb; Console.WriteLine("Geben sie die mögliche Zahl ein"); ZahlB=Console.ReadLine(); Zahlb=Convert.ToInt32(ZahlB); Random zufall = new Random(); int ZahlA = zufall.Next(1,100); for(int i=1; ZahlA>Zahlb || ZahlA<Zahlb ;i++) { if(Zahlb>ZahlA) { Console.WriteLine("Die Zahl ist zu groß"); Console.WriteLine("Geben sie eine weitere mögliche Zahl ein"); ZahlB=Console.ReadLine(); Zahlb=Convert.ToInt32(ZahlB); } if (Zahlb<ZahlA) { Console.WriteLine("Die Zahl ist zu klein"); Console.WriteLine("Geben sie eine weitere mögliche Zahl ein"); ZahlB=Console.ReadLine(); Zahlb=Convert.ToInt32(ZahlB); } } if (ZahlA==Zahlb) Console.WriteLine("Richtig, die gesuchte Zahl ist {0}",Zahlb); } Console.ReadLine();
- Typ geändert DerChris199211 Freitag, 6. Dezember 2013 10:52
Antworten
-
Hallo,
ist das interessant genug? ;-)string ZahlB; int Zahlb; Random zufall = new Random(); int ZahlA = zufall.Next(1, 100); for (int i = 1; ; i++) { Console.Write("Geben sie eine mögliche Zahl ein: "); ZahlB = Console.ReadLine(); Zahlb = Convert.ToInt32(ZahlB); if (Zahlb > ZahlA) { Console.WriteLine("Die Zahl {0} ist zu groß", Zahlb); } else if (Zahlb < ZahlA) { Console.WriteLine("Die Zahl {0} ist zu klein", Zahlb); } else { Console.WriteLine("Richtig, die gesuchte Zahl ist {0}", Zahlb); Console.WriteLine("Sie haben {0} Versuche benötigt.", i); break; } } Console.ReadLine();
Solltest du Fragen dazu haben, immer her damit :)Viele Grüße Holger M. Rößler
- Als Antwort markiert Ciprian Bogdan Donnerstag, 12. Dezember 2013 14:04
Alle Antworten
-
Hallo,
ist das interessant genug? ;-)string ZahlB; int Zahlb; Random zufall = new Random(); int ZahlA = zufall.Next(1, 100); for (int i = 1; ; i++) { Console.Write("Geben sie eine mögliche Zahl ein: "); ZahlB = Console.ReadLine(); Zahlb = Convert.ToInt32(ZahlB); if (Zahlb > ZahlA) { Console.WriteLine("Die Zahl {0} ist zu groß", Zahlb); } else if (Zahlb < ZahlA) { Console.WriteLine("Die Zahl {0} ist zu klein", Zahlb); } else { Console.WriteLine("Richtig, die gesuchte Zahl ist {0}", Zahlb); Console.WriteLine("Sie haben {0} Versuche benötigt.", i); break; } } Console.ReadLine();
Solltest du Fragen dazu haben, immer her damit :)Viele Grüße Holger M. Rößler
- Als Antwort markiert Ciprian Bogdan Donnerstag, 12. Dezember 2013 14:04
-
Das sieht schon besser aus:)
Jetzt kommt die nächste Hürde, ich möchte gerne, dass es unterschiedliche Einstufungen gibt.
Zum Beispiel:
Kalt
warm
heiß
Treffer
Wie kann ich sowas sinnvoll umsetzen?
Wenn ich sage, Zahlb>20 oder sowas, dann ist es ja so, wenn die ZahlA wirklich 15 ist, schließe ich das ja dann dadurch aus.
Danke! -
Hallo,
dann musst du definieren, bei welcher Abweichung welche entsprechende Stufe erscheinen soll. Dies ist auch von der Zufallszahl abhängig. Je kleiner die Zahl, umso kleiner solltest du die Grenzen definieren! Hier würde ich also die Abweichung in %-Werten definieren.So zum Beispiel:
x +/- 5% == heiß
x +/- 10 % == warm
ansonsten kalt, wenn Zahl nicht getroffen wurdeIch hoffe, das hilft dir weiter...
Viele Grüße Holger M. Rößler
- Bearbeitet Holger M. Rößler Freitag, 6. Dezember 2013 11:59
-
string ZahlB; int Zahlb; Random zufall = new Random(); int ZahlA = zufall.Next(1,100); for(int i=1;;i++) { Console.WriteLine("Geben sie die mögliche Zahl ein"); ZahlB=Console.ReadLine(); Zahlb=Convert.ToInt32(ZahlB); if((Zahlb/100)*10>ZahlA) { Console.WriteLine("Die Zahl ist zu groß"); Console.Write("Heiß"); } else if((Zahlb/100)*20>ZahlA); { Console.WriteLine("Die Zahl ist zu groß"); Console.Write("Warm"); } else { Console.WriteLine("Die Zahl ist zu groß"); Console.Write("Kalt"); } if ((Zahlb/100)*10<ZahlA) { Console.WriteLine("Die Zahl ist zu klein"); Console.Write("heiß"); } else if((Zahlb/100)*20<ZahlA) { Console.WriteLine("Die Zahl ist zu klein"); Console.Write("Warm"); } else { Console.WriteLine("Die Zahl ist zu klein"); Console.Write("Kalt"); } if (ZahlA==Zahlb) { Console.WriteLine("Richtig, die gesuchte Zahl ist {0}",Zahlb); break; } }
Was habe ich nun falsch gemacht? ..
Er gibt mir folgende Fehler aus:
Zeile 35 CS0642 Möglicherweise falsche leere Anweisung
Zeile 39 CS1525 Ungültiger Ausdruck else
Zeile 39 CS 1002 ; erwartet (hinter einem else? ...????)
-
-
Hi DerChris199211,
Um die Übersicht der Foren nicht zu stören, poste bitte demnächst die Fragen auf einzelne Threads.
Danke und Gruß,
Ciprian
Ciprian Bogdan, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.