C# :: Aufgabe #25 :: Lösung #8

12 Lösungen Lösungen öffentlich
#25

Zahlen Raten - Fortgeschrittener

Fortgeschrittener - C# von zayc_ - 28.12.2012 um 14:00 Uhr
Das zu programmierende Programm soll eine Zufallszahl (integer, der User soll nach dem Bereich gefragt werden) generieren.
Der User soll diese erraten. Nach jedem Versuch soll der User darüber informiert werden, der wie vielte Versuch es war, ob er richtig oder falsch liegt, und wenn er falsch liegt ob die gesuchte Zahl grösser oder kleiner als die vom User eingegebene ist.

Zusatz für Fortgeschrittene:
Bei Falscheingaben (Buchstaben, Sonderzeichen, etz.) soll der User darüber informiert werden.
Bei den Versuchen >10 soll eine führende Null mit ausgegeben werden (also statt 1,2,3 soll 01, 02 ,03 ausgegeben werden.)
Bei der wiederholten Eingabe einer Zahl soll der User darüber informiert werden.
Der User soll den Bereich in dem die Zufallszahl liegen soll, selbst definieren.
Der User soll informiert werden, wenn sein Versuch ausserhalb des definierten Bereichs liegt.



Beispiel einer Konsolenausgabe:

Konsolenausgabe:


Bitte die Untergränze wählen: 20
Bitte die Obergränze wählen: 60

Bitte erraten sie die gesuchte Zahl, sie befindet sich zwischen 20 und 60.

Ihr 01. Versuch: 5
Die eingegebene Zahl befindet sich ausserhalb des von ihnen definierten Bereich.

Ihr 02. Versuch: halloooo
Bitte nur Z A H L E N eingeben.

Ihr 03. Versuch: 55
Die gesuchte Zahl ist kleiner.

Ihr 04. Versuch: 25
Die gesuchte Zahl ist grösser.

Ihr 05. Versuch: 55
Mit dieser Zahl haben Sie es schon einmal versucht!

Ihr 06. Versuch: 40
Glückwunsch die von Ihnen eingegebene Zahl ( 40 ) stimmt mit der gesuchten Zahl überein.
#8
vote_ok
von n.rohde (400 Punkte) - 28.08.2015 um 10:24 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ZahlenRaten_Fortgeschrittener
{
    class Program
    {
        static void Main(string[] args)
        {
            // Deklaration der Variablen
            int obergrenze, untergrenze, zufallZahl, rateZahl, anzahlVersuch = 1, durchlauf = 0;
            Random rnd = new Random();
            int[] eingegebeneZahlen;

            Console.Write("Bitte die Untergrenze wählen:\t");
            untergrenze = Convert.ToInt32(Console.ReadLine());      // Inistalisierung von untergrenze
            Console.Write("Bitte die Obergrenze wählen:\t");
            obergrenze = Convert.ToInt32(Console.ReadLine());       // Inistalisierung von obergrenze

            eingegebeneZahlen = new int[obergrenze - untergrenze];  // Initalisierung von eingegebeneZahlen -> Array ist so größ, wie Zahlen im Wertebereich gibt

            Console.WriteLine("\nBitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen " + Convert.ToString(untergrenze) + " und " + Convert.ToString(obergrenze));
            zufallZahl = rnd.Next(untergrenze, obergrenze + 1);    // Inistalisierung von rateZahl

            do
            {
                if (anzahlVersuch < 10)     // Bei den ersten 9 Versuchen eine 0 vor anzahlVersuch ausgeben
                    if (anzahlVersuch == 1) // erste Ausgabe ohne Zeilenumbruch
                        Console.Write("Ihr 0" + Convert.ToString(anzahlVersuch) + ". Versuch: ");
                    else
                        Console.Write("\nIhr 0" + Convert.ToString(anzahlVersuch) + ". Versuch: ");
                else
                    Console.Write("\nIhr " + Convert.ToString(anzahlVersuch) + ". Versuch: ");

                if (Int32.TryParse(Console.ReadLine(), out rateZahl))           // TryParse überprüft ob eingabe ein int ist und ob es in rateZahl gespeichert werden kann und tut dies falls es möglich ist
                {
                    if (rateZahl < untergrenze || rateZahl > obergrenze)
                        Console.Write("Die eingegebene Zahl befindet sich ausserhalb des von ihnen definierten Bereich.");
                    else if (DoppelteZahl(eingegebeneZahlen, rateZahl) == true) // Überprüfung auf doppelte Eingabe
                        Console.Write("Mit dieser Zahl haben Sie es schon einmal versucht!\n");
                    else if (rateZahl < zufallZahl)
                    {
                        Console.Write("Die gesuchte Zahl ist grösser.\n");
                        eingegebeneZahlen[durchlauf] = rateZahl;
                        durchlauf++;
                    }
                    else if (rateZahl > zufallZahl)
                    {
                        Console.Write("Die gesuchte Zahl ist kleiner.\n");
                        eingegebeneZahlen[durchlauf] = rateZahl;
                        durchlauf++;
                    }
                }
                else
                    Console.Write("Bitte nur Z A H L E N eingeben.\n");
                anzahlVersuch++;
            } while (zufallZahl != rateZahl);
            Console.WriteLine("Glückwunsch die von Ihnen eingegebene Zahl ( " + Convert.ToString(rateZahl) + " ) stimmt mit der gesuchten Zahl überein.");
            Console.Read();
        }

        static bool DoppelteZahl(int[] eingebeneZahlen, int zahl)
        {
            for (int i = 0; i < eingebeneZahlen.Length; i++)
                if (eingebeneZahlen[i] == zahl)     // wurde die Zahl schon einmal eingegeben wird der Wert true zurückgegeben
                    return true;                    // Funktion wird damit beendet
            return false;                           // werden keine Dopplungen gefunden wird false zurückgegeben
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2101589

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.