C# :: Aufgabe #25

12 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von pocki (4190 Punkte) - 07.01.2013 um 18:42 Uhr
Hier ist meine Lösung:
Quellcode ausblenden C#-Code
void main()
{
	Console.Write("Bitte die Untergrenze wählen: ");
	int lower = int.Parse(Console.ReadLine());
	Console.Write("Bitte die Obergrenze wählen: ");
	int upper = int.Parse(Console.ReadLine());

	Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}.", lower, upper);
	int random = GetRandom(lower, upper);
	int versuch = 1;
	List<int> eingaben = new List<int>();
	
	do
	{
		Console.Write("Ihr {0:00}. Versuch: ", versuch);
		string input = Console.ReadLine();
		int eingabe = 0;
		
		bool isZahl = int.TryParse(input, out eingabe);
		if (isZahl)
		{
			if (eingabe < lower || eingabe > upper)
			{
				Console.WriteLine("Die eingegebene Zahl befindet sich außerhalb des von Ihnen definierten Bereichs.");
			}
			else
			{
				if (eingaben.Contains(eingabe))
				{
					Console.WriteLine("Mit dieser Zahl haben Sie es schon einmal versucht!");
				}
				else
				{
					eingaben.Add(eingabe);
					if (eingabe > random)
					{
						Console.WriteLine("Die gesuchte Zahl ist kleiner.");
					}
					else if (eingabe < random)
					{
						Console.WriteLine("Die gesuchte Zahl ist größer.");
					}
					else
					{
						Console.WriteLine("Glückwunsch die von Ihnen eingegebene Zahl ({0}) stimmt mit der gesuchten Zahl überein.", random);
					}				
				}
			}
		}
		else
		{
			Console.WriteLine("Bitte nur Z A H L E N eingeben.");
		}
		versuch++;
	} while (eingaben.LastOrDefault() != random);
}

private static int GetRandom(int lower, int upper)
{
	Random r = new Random();
	return r.Next(lower, upper);
}
vote_ok
von Alucard1766 (930 Punkte) - 23.04.2014 um 08:30 Uhr
Die Lösung ist relativ straightforward.

Screenshot der Ausgabe: Link auf imgur.com

Das Programm funktioniert in der Theorie auch mit negativen Werten. Jedoch sollte dann Z30 angepasst werden und iGeraten mit einem null Wert initialisiert werden.

Quellcode ausblenden C#-Code
static void Main(string[] args)
        {
            bool bInputOK = false;
            int iUntergrenze = 0;
            int iObergrenze = 0;
            while (!bInputOK)
            {
                Console.Write("Geben Sie die Untergrenze ein: "); string strUntergrenze = Console.ReadLine();
                Console.Write("Geben Sie die Obergrenze ein: "); string strObergrenze = Console.ReadLine(); Console.WriteLine();

                try
                {
                    iUntergrenze = Int32.Parse(strUntergrenze);
                    iObergrenze = Int32.Parse(strObergrenze);
                }
                catch (FormatException)
                {
                    continue;
                }

                if (iUntergrenze < iObergrenze)
                    bInputOK = true;
            }

            Random rng = new Random();
            int iZufallszahl = rng.Next(iUntergrenze, iObergrenze + 1);



            int iGeraten = -1;
            int i = 0;
            List<int> lstHistory = new List<int>();

            while (iGeraten != iZufallszahl)
            {
                i++;
                if (i <= 9)
                    Console.Write("Ihr 0" + i + ". Versuch: ");
                else
                    Console.Write("Ihr " + i + ". Versuch: ");

                string strGeraten = Console.ReadLine();
                try
                {
                    iGeraten = Int32.Parse(strGeraten);
                }
                catch (FormatException)
                {
                    Console.WriteLine("Bitte nur Ganzzahlen eingeben\r\n");
                    continue;
                }

                if (iGeraten < iUntergrenze || iGeraten > iObergrenze)
                {
                    Console.WriteLine("Ihre Eingabe entspricht nicht dem angegebenen Bereich.\r\n");
                    continue;
                }

                if (lstHistory.Contains(iGeraten))
                {
                    Console.WriteLine("Diese Zahl wurde schon geraten\r\n");
                    continue;
                }
                else
                    lstHistory.Add(iGeraten);

                if (iZufallszahl > iGeraten)
                    Console.WriteLine("Die Zufallszahl ist grösser.\r\n");
                else if (iZufallszahl < iGeraten)
                    Console.WriteLine("Die Zufallszahl ist kleiner.\r\n");
            }

            Console.WriteLine("Glückwunsch, Sie haben die Zahl erraten");
            Console.ReadLine();
        }
vote_ok
von wladi-g (1310 Punkte) - 03.06.2014 um 09:45 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;

namespace zahlenRatenFortgeschritten
{
    class Program
    {
        static void Main(string[] args)
        {
            int versuch = 1;
            int uGrenze = 0;
            int oGrenze = 0;
            int eingabe = 0;
            int zuErratendeZahl = 0;
            Random rnd = new Random();
            List<int> versuchteZahlen = new List<int>();

            do
            {
                Console.Write("Bitte die Untergrenze wählen: ");
            }
            while (!Int32.TryParse(Console.ReadLine(), out uGrenze));

            do
            {
                Console.Write("Bitte die Obergrenze wählen: ");
            }
            while (!Int32.TryParse(Console.ReadLine(), out oGrenze) || oGrenze < uGrenze);

            Console.WriteLine("\n");
            Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}.\n", uGrenze, oGrenze);
            zuErratendeZahl = rnd.Next(uGrenze, oGrenze);

            do
            {
                Console.Write("Ihr ");
                if (versuch < 10)
                    Console.Write("0{0} Versuch: ", versuch);
                else
                    Console.Write("{0} Versuch: ", versuch);
                if (!Int32.TryParse(Console.ReadLine(), out eingabe))
                    Console.WriteLine("Bitte nur Z A H L E N eingeben.\n");
                else if (eingabe < uGrenze || eingabe > oGrenze)
                    Console.WriteLine("Die eingegebene Zahl befindet sich außerhalb des von Ihnen definierten Bereichs.\n");
                else if (versuchteZahlen.Contains(eingabe))
                    Console.WriteLine("Mit dieser Zahl haben Sie es schon einmal versucht!\n");
                else if (eingabe < zuErratendeZahl)
                {
                    Console.WriteLine("Die gesuchte Zahl ist größer.\n");
                    versuchteZahlen.Add(eingabe);
                }
                else if (eingabe > zuErratendeZahl)
                {
                    Console.WriteLine("Die gesuchte Zahl ist kleiner.\n");
                    versuchteZahlen.Add(eingabe);
                }
                versuch++;
            }
            while (eingabe != zuErratendeZahl);
            Console.WriteLine("Glückwunsch die von Ihnen eingegebene Zahl ( {0} ) stimmt mit der gesuchten Zahl überein.", eingabe);
        }
    }
}
vote_ok
von peterindies (440 Punkte) - 27.11.2014 um 17:53 Uhr
Quellcode ausblenden C#-Code
namespace ConsoleApplication4
{
    using System;
    using System.Collections.Generic;

    internal class Program
    {
        private static int GetRandom(int lower, int upper)
        {
            var r = new Random();
            return r.Next(lower, upper);
        }

        private static void Main(string[] args)
        {
            int lower;
            int upper;
            while (true)
            {
                Console.Write("Bitte die Untergrenze wählen: ");

                if (int.TryParse(Console.ReadLine(), out lower))
                {
                    break;
                }

                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Bitte nur ganze Z A H L E N eingeben!");
                Console.ForegroundColor = ConsoleColor.Gray;
            }

            while (true)
            {
                Console.Write("Bitte die Obergrenze wählen: ");

                if (int.TryParse(Console.ReadLine(), out upper))
                {
                    break;
                }

                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Bitte nur ganze Z A H L E N eingeben!");
                Console.ForegroundColor = ConsoleColor.Gray;
            }

            Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}.", lower, upper);
            int random = GetRandom(lower, upper);

            var eingaben = new List<int>();
            int eingabe;
            bool gefunden = false;
            bool grenze = true;
            int versuch = 0;
            while (!gefunden)
            {
                Console.WriteLine("Zahl eingeben");
                string input = Console.ReadLine();

                versuch += 1;

                if (int.TryParse(input, out eingabe))
                {
                    if (eingabe < lower || eingabe > upper)
                    {
                        Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                        Console.WriteLine("Die Zahl liegt außerhalb der festgelegten Grenze!");
                        grenze = false;
                    }

                    if (eingabe < random && grenze)
                    {
                        if (!eingaben.Contains(eingabe))
                        {
                            eingaben.Add(eingabe);
                            Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                            Console.WriteLine("Die Zahl ist größer");
                        }
                        else
                        {
                            Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                            Console.WriteLine("Mit der Zahl haben sie es schonmal versucht!");
                        }
                    }

                    if (eingabe > random && grenze)
                    {
                        if (!eingaben.Contains(eingabe))
                        {
                            eingaben.Add(eingabe);
                            Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                            Console.WriteLine("Die Zahl ist kleiner");
                        }
                        else
                        {
                            Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                            Console.WriteLine("Mit der Zahl haben sie es schonmal versucht!");
                        }
                    }

                    if (eingabe == random)
                    {
                        Console.WriteLine("Ihr {0}. Versuch: {1}", versuch, eingabe);
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.WriteLine("Glückwunsch Sie haben die gesuchte Zahl {0} gefunden!!", random);
                        Console.ReadLine();
                        gefunden = true;
                    }
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("Bitte nur ganze Z A H L E N eingeben!");
                    Console.ForegroundColor = ConsoleColor.Gray;
                }
                grenze = true;
            }
        }
    }
}

vote_ok
von DBqFetti (2480 Punkte) - 15.03.2015 um 01:01 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

namespace Zahlen_Raten {
	class Program {
		static void Main() {
			int untergrenze = -1, obergrenze = -1, gesuchteZahl;
			List<int> GetippteZahlen = new List<int>();

			while (untergrenze < 0) {
				Console.Write("Bitte die Untergrenze auswählen>");
				try {
					untergrenze = Convert.ToInt32(Console.ReadLine());
				}
				catch (FormatException) { }
			}

			while (obergrenze <= untergrenze) {
				Console.Write("Bitte die Obergrenze auswählen>");
				try {
					obergrenze = Convert.ToInt32(Console.ReadLine());
				}
				catch (FormatException) { }
			}

			Random rnd = new Random();
			gesuchteZahl = rnd.Next(untergrenze, obergrenze + 1);

			Console.WriteLine("\nBitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}", untergrenze, obergrenze);

			int zähler = 1;
			while (GetippteZahlen.LastOrDefault() != gesuchteZahl) {
				Console.Write("\nIhr {0:00}. Versuch>", zähler);
				try {
					GetippteZahlen.Add(Convert.ToInt32(Console.ReadLine()));
					
					if (GetippteZahlen.Count(x => x == GetippteZahlen.LastOrDefault()) > 1) {
						Console.WriteLine("Mit dieser Zahl haben Sie es schon einmal versucht!");
						GetippteZahlen.RemoveAt(GetippteZahlen.Count - 1);
						continue;
					}

					if (GetippteZahlen.LastOrDefault() < untergrenze || GetippteZahlen.LastOrDefault() > obergrenze) {
						Console.WriteLine("Die eingegebene Zahl befindet sich außerhalb des von Ihnen definierten Bereichs.");
						continue;
					}

					if(GetippteZahlen.LastOrDefault() < gesuchteZahl)
						Console.WriteLine("Die gesuchte Zahl ist größer.");

					if (GetippteZahlen.LastOrDefault() > gesuchteZahl)
						Console.WriteLine("Die gesuchte Zahl ist kleiner.");

				}
				catch (FormatException) {
					Console.WriteLine("Bitte nur Z A H L E N eingeben");
				}
				finally {
					zähler++;
				}
			}

			Console.WriteLine("Glückwünsch, die von Ihnen eingegebene Zahl ( {0} ) stimmt mit der gesuchten Zahl überein.", GetippteZahlen.LastOrDefault());
			Console.ReadKey(true);
		}
	}
}

vote_ok
von Torbo (880 Punkte) - 18.05.2015 um 13:10 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ZahlenratenKonsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rnd = new Random();
            Console.WriteLine("Bitte die Untergränze wählen");
            int a=Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Bite die Obergrenze wählen");
            int b=Convert.ToInt32(Console.ReadLine());
            int d = rnd.Next(a, b+1);                     
            Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen "+a+" und "+b);           
            for (int i = 1; i > -1;++i )
            {    
                int e = Convert.ToInt32(Console.ReadLine());                
                if( e > d)
                {
                    Console.WriteLine("Die Gesuchte Zahl ist kleiner als die eingegebene");
                }
                else if (e < d)
                {
                    Console.WriteLine("Die Gesuchte Zahl ist Größer als die eingegebene");
                }
                else if (e == d)
                {
                    Console.WriteLine("GLÜCKWUNSCH! DU HAST GEWONNEN!!!");
                    break;
                }
                else if (e > b) { Console.WriteLine("Deine Zahl fällt voll aus dem rahmen"); }
                Console.WriteLine("Das war der " + i + " versuch");            
            }
            Console.ReadKey();
        }
    }
}
vote_ok
von niknik (1230 Punkte) - 07.08.2015 um 11:51 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MoreLikeIt
{
    class Program
    {
        static void Main(string[] args)
        {
            string antwort = "";
            do
            {
                Random rnd = new Random();
                int versuch = 0, zahl, raten, unter, ober;
                string eingabe = "-1";
                bool valid = false;
                ArrayList liste = new ArrayList();

                Console.Clear();
                do
                {
                    Console.Clear();
                    Console.WriteLine("Untergrenze: ");
                    valid = int.TryParse(Console.ReadLine(), out unter);
                } while (valid != true);

                do
                {
                    Console.Clear();
                    Console.WriteLine("Obergrenze: ");
                    valid = int.TryParse(Console.ReadLine(), out ober);
                } while (valid != true || ober < unter);

                zahl = rnd.Next(unter, ober+1);
                Console.WriteLine("Erraten sie die Pseudozufallszahl zwischen {0} und {1}", unter, ober);
                while (int.Parse(eingabe) != zahl)
                {
                    do
                    {
                        if (versuch + 1 < 10)
                        {
                            Console.Write("Deine 0{0}. Versuch: ", ++versuch);
                        }
                        else
                        {
                            Console.Write("Deine {0}. Versuch: ", ++versuch);
                        }
                        
                        eingabe = Console.ReadLine();
                        valid = int.TryParse(eingabe, out raten);
                        if (valid == false)
                        {
                            Console.WriteLine("Ungültige Eingabe.");
                            continue;
                        }
                        if (raten < unter || raten > ober)
                        {
                            valid = false;
                            Console.WriteLine("Eingabe liegt außerhalb des Wertebereichs.");
                            continue;
                        }
                        if (liste.Contains(raten))
                        {
                            valid = false;
                            Console.WriteLine("Diese Eingabe haben Sie bereits versucht.");
                            continue;
                        }
                    } while (valid != true);

                    liste.Add(raten);

                    if (raten < zahl)
                    {
                        Console.WriteLine("Die Zufallszahl ist größer.");
                    }
                    else if (raten > zahl)
                    {
                        Console.WriteLine("Die Zufallszahl ist kleiner.");
                    }
                    else
                    {
                        Console.WriteLine("Richtig :)\nWillst du noch einmal spielen? (N - Nein)");
                        antwort = Console.ReadLine().ToUpper();
                    }
                }
            } while (antwort[0] != 'N');
        }
    }
}
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
        }
    }
}
vote_ok
von DrizZle (360 Punkte) - 22.06.2016 um 13:55 Uhr
Quellcode ausblenden C#-Code
class Program
{
    static void main(string[] args)
	{
	    Console.Write("Untere Grenze: ");
		int min = Convert.ToInt32(Console.ReadLine());
		Console.Write("Obere Grenze: ");
		int max = Convert.ToInt32(Console.ReadLine());
		StartGame();
	}
	static void StartGame(int min, int max)
	{
	    Random rand = new Random();
		int number = rand.Next(min, max);
		Console.WriteLine("Das Spiel startet.. Viel Glück!");
        Check();
	}
	static bool DoesExist(List<int> eingaben, int userinput)
	{
	    for(int i = 0; i < eingaben.Count<int>(); i++)
		{
		    if(userinput.ToString() == eingaben[i].ToString())
			    return true;
		}
		return false;
	}
	static void Check(int number)
	{
	    List<int> eingaben = new List<int>();
	    int userinput = null, counter = 0;
	    while(true)
        {
		    counter++;
			if(counter < 10)
		        Console.Write("Ihr " + "0"+ counter + "Versuch: ");
			Console.Write("Ihr " + counter + "Versuch: ");
			try //if !int { catch -> print error};
			    userinput = Convert.ToInt32(Console.ReadLine());
				if(DoesExist(eingaben, userinput))
				    Console.WriteLine("Mit dieser Zahl haben Sie es schon einmal versucht!");
				eingaben.Add(userinput);
			catch
			    Console.WriteLine("Bitte nur Z A H L E N eingeben.");
				
			if(userinput > number && userinput < max && userinput > min)
			    Console.WriteLine("Die gesuchte Zahl ist kleiner.");
			else if(userinput < number && userinput < max && userinput > min) 
			    Console.WriteLine("Die gesuchte Zahl ist größer.");
			else if(userinput == number)
			    break;
			else
			    Console.WriteLine("Die gesuchte Zahl befindet sich nicht in ihrem definierten Bereich!");
        }	
		Console.WriteLine("Glückwunsch die von Ihnen eingegebene Zahl ( " + userinput + ") stimmt mit der gesuchten Zahl überein");	
	}
}
vote_ok
von stbehl (1640 Punkte) - 05.02.2018 um 08:36 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrainYourProgrammer25
{
    class Program
    {
        static void Main(string[] args)
        {
            bool gesucht = true, grenzen = true;
            int versuch = 01, zahl, untergrenze = 0, obergrenze = 9999;


            while (grenzen)
            {
                Console.Write("Bitte die Untergrenze wählen: ");
                untergrenze = Convert.ToInt32(Console.ReadLine());
                Console.Write("\nBitte die Obergrenze eingeben: ");
                obergrenze = Convert.ToInt32(Console.ReadLine());
                if (untergrenze > obergrenze)
                {
                    Console.WriteLine("Bitte geben Sie eine kleinere Untergrenze als Obergrenze ein.");
                }
                else
                {
                    grenzen = false;
                }

            }
            int[] zahlen = new int[obergrenze - untergrenze];

            Console.WriteLine("\nBitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}.\n", untergrenze, obergrenze);
            Random rnd = new Random();
            int zufall = rnd.Next(untergrenze, obergrenze +1);

            while (gesucht)
            {
                if (versuch < 10)
                {
                    Console.Write("Ihr 0{0}. Versuch: ", versuch);
                }
                else
                {
                    Console.Write("Ihr {0}. Versuch: ", versuch);
                }

                string eingabe = Console.ReadLine();
                if (Int32.TryParse(eingabe, out zahl))
                {
                    if (zahl > obergrenze || zahl < untergrenze)
                    {
                        Console.WriteLine("\nDie eingegebene Zahl befindet sich ausserhalb des von Ihnen definierten Bereiches.");
                        versuch--;
                    }
                    else
                    {
                        zahlen[versuch-1] = zahl;
                        if (Array.IndexOf(zahlen, zahl) < 0)
                        {
                            if (zahl > zufall)
                            {
                                Console.WriteLine("\nDie gesuchte Zahl ist kleiner.");
                            }
                            else if (zahl < zufall)
                            {
                                Console.WriteLine("\nDie gesuchte Zahl ist größer.");
                            }
                            else
                            {
                                Console.WriteLine("\nGlückwunsch, die von Ihnen eingegebene Zahl {0} stimmt mit der gesuchten Zahl überein.", zahl);
                                gesucht = false;
                            }
                        }
                        else
                        {
                            Console.WriteLine("Mit dieser Zahl haben Sie es bereits versucht.");
                            versuch--;
                        }
                        
                    }
                }
                else
                {
                    Console.WriteLine("\nBitte nur Z A H L E N eingeben.");
                    versuch --;
                }

                versuch++;
            }
            Console.ReadKey();
        }
    }
}

vote_ok
von stcalvin (970 Punkte) - 05.02.2018 um 12:15 Uhr
Quellcode ausblenden C#-Code
        static void Aufgabe_25()
        {
            int zufallsZahl = 0, gerateneZahl, startWert, endWert, counter = 1;
            ArrayList zahlen = new ArrayList();
            Random random = new Random();
            Boolean erraten = false, richtigeEingabe;

            Console.Write("Bitte die Untergrenze wählen: ");
            startWert = Convert.ToInt16(Console.ReadLine());
            Console.Write("Bitte die Obergrenze wählen: ");
            endWert = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine();
            Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}.", startWert, endWert);
            Console.WriteLine();
            zufallsZahl = random.Next(startWert, endWert + 1);

            while (!erraten)
            {
                if (counter < 10)
                {
                    Console.Write("Ihr 0{0}. Versuch: ", counter);
                }
                else
                {
                    Console.Write("Ihr {0}. Versuch: ", counter);
                }

                richtigeEingabe = Int32.TryParse(Console.ReadLine(), out gerateneZahl);

                if (!richtigeEingabe)
                {
                    Console.WriteLine("Bitte nur Z A H L E N eingeben.");
                }
                else
                {
                    for (int i = 0; i <= zahlen.Count - 1; i++)
                    {
                        if (gerateneZahl == Convert.ToInt16(zahlen[i]))
                        {
                            Console.WriteLine("Mit dieser Zahl haben Sie es schon einmal versucht!");
                            continue;
                        }
                    }
                    if (gerateneZahl > endWert || gerateneZahl < startWert)
                    {
                        Console.WriteLine("Die eingegebene Zahl befindet sich außerhalb des von Ihnen definierten Bereichs.");
                    }
                    else
                    {
                        if (gerateneZahl > zufallsZahl)
                        {
                            Console.WriteLine("Die gesuchte Zahl ist kleiner.");
                        }
                        else if (gerateneZahl < zufallsZahl)
                        {
                            Console.WriteLine("Die gesuchte Zahl ist größer.");
                        }
                        else if (gerateneZahl == zufallsZahl)
                        {
                            Console.WriteLine("Glückwunsch die von Ihnen eingegebene Zahl ( {0} ) stimmt mit der gesuchten Zahl überein.", gerateneZahl);
                            erraten = true;
                        }
                    }
                    zahlen.Add(gerateneZahl);
                }
                counter++;
            }
        }
vote_ok
von Flocke (180 Punkte) - 26.11.2019 um 18:02 Uhr
Quellcode ausblenden C#-Code
namespace ZahlenRaten
{
    class ZahlenRaten
    {
        static void Main(string[] args)
        {
            var enginge = new Engine();
            enginge.ValidateSpan();
        }
    }
}


Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace ZahlenRaten
{
    class Engine
    {
        string underS;
        string upperS;
        string guessS;

        int under;
        int upper;
        int attempts;
        int rndNumber;
        int guessedNumber;

        int[] guessedNumbers = new int[0];

        public void ValidateSpan()
        {
            do
            {
                Console.Write("Bitte die Untergrenze angeben: ");
                underS = (Console.ReadLine());
                Console.Write("Bitte die Obergrenze angeben: ");
                upperS = (Console.ReadLine());

                if (TryParseInt(underS) && TryParseInt(upperS))
                {
                    under = Int32.Parse(underS);
                    upper = Int32.Parse(upperS);
                    rndNumber = this.GenerateRndNumber(under, upper);
                    this.ValidateUserInput(under, upper);
                }
                else Console.WriteLine("Bitte nur Zahlen eingeben");
            } while (!TryParseInt(underS) || !TryParseInt(upperS));
        }

        private void ValidateUserInput(int under, int upper)
        {
            do
            {
                Console.WriteLine("Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen {0} und {1}: ", under, upper);
                guessS = Console.ReadLine();
                if (TryParseInt(guessS))
                {
                    guessedNumber = Int32.Parse(guessS);
                    this.DetermineCorrectGuess(guessedNumber, under, upper);
                }
                else Console.WriteLine("Bitte nur Zahlen eingeben");
            }
            while (!TryParseInt(guessS) || guessedNumber != rndNumber);
        }

        private void DetermineCorrectGuess(int guessedNumber, int under, int upper)
        {
            attempts++;
            if (guessedNumbers.Contains(guessedNumber))
            {
                var attempt = attempts.ToString().PadLeft(2, '0');
                Console.Clear();
                Console.WriteLine("Versuch {0}: Mit dieser Zahl {1} haben sie es schon einmal versucht!", attempts, guessedNumber);
            }
            else if (guessedNumber < under || guessedNumber > upper)
            {
                var attempt = attempts.ToString().PadLeft(2, '0');
                Console.Clear();
                Console.WriteLine("Versuch {0}: Die gesuchte Zahl liegt außerhalb des Definitionbereichs", attempt);
            }
            else if (guessedNumber < rndNumber)
            {
                var attempt = attempts.ToString().PadLeft(2, '0');
                Console.Clear();
                Console.WriteLine("Versuch {0}: Die gesuchte Zahl ist größer", attempt);
                Array.Resize(ref guessedNumbers, guessedNumbers.Length + 1);
                guessedNumbers[guessedNumbers.GetUpperBound(0)] = guessedNumber;
            }
            else if (guessedNumber > rndNumber)
            {
                var attempt = attempts.ToString().PadLeft(2, '0');
                Console.Clear();
                Console.WriteLine("Versuch {0}: Die gesuchte Zahl ist kleiner", attempt);
                Array.Resize(ref guessedNumbers, guessedNumbers.Length + 1);
                guessedNumbers[guessedNumbers.GetUpperBound(0)] = guessedNumber;
            }
            else if (guessedNumber == rndNumber)
            {
                var attempt = attempts.ToString().PadLeft(2, '0');
                Console.Clear();
                Console.WriteLine("Versuch {0}: Glückwunsch! Die von Ihnen eingegebene Zahl {1} ist korrekt!", attempt, guessedNumber);
                Console.ReadKey();
            }
        }

        private int GenerateRndNumber(int under, int upper)
        {
            var rndNumber = new Random();
            return rndNumber.Next(under, upper++);
        }

        private bool TryParseInt(String s)
        {
            int i;
            bool valid = Int32.TryParse(s, out i);
            return valid;
        }
    }
}


Konsolenausgabe:

Bitte die Untergrenze angeben: 20
Bitte die Obergrenze angeben: 50
Bitte erraten Sie die gesuchte Zahl, sie befindet sich zwischen 20 und 50:
Versuch 03: Mit dieser Zahl 22 haben sie es schon einmal versucht!
Versuch 08: Die eingegebene Zahl liegt außerhalb des Definitionbereichs
Versuch 12: Die gesuchte Zahl ist größer
Versuch 16: Die gesuchte Zahl ist kleiner
Versuch 18: Glückwunsch! Die von Ihnen eingegebene Zahl 47 ist korrekt!


Fehlermeldung:

Ungültige Spanne, Untergrenze muss größer oder gleich der Obergrenze sein!
Bitte nur Zahlen eingeben!

2101049

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.