none
Visual Basic Computer errät Zahl RRS feed

  • Frage

  • Guten Tag,

    ich hätte da ne Frage. Ich soll ein Programm programmieren, bei dem der Computer meine Zahl errät, im Bereich von 0 bis 100. Man soll immer eingeben ob diese Zahl größer oder kleiner als die vom Computer erratene Zahl ist.

    Dies ist bist jetzt mein Quellcode. Mein Problem ist der Bereich 0-100 und die Formel für a. Habt ihr Ideen? Bin Neuling im Programmieren.

        Sub Main()
            Console.WriteLine("Denken Sie sich eine Zahl zwischen 1 und 100 aus.")
            Console.WriteLine("R die Zahl ist Richtig")
            Console.WriteLine("G die gesuchte Zahl ist größer")
            Console.WriteLine("K die gesuchte Zahl ist kleiner")

    Dim a As Integer
            Dim b As String
            a = 50

            Do
                Console.WriteLine("Ist ihre Zahl " & a & "?")
                b = Console.ReadLine()
                If b = "G" Then
                    a = 50 + a / 2
                Else
                    If b = "K" Then
                        a = a - a / 2
                    End If
                End If

            Loop Until b = "R"
            Console.WriteLine("Die gesuchte Zahl war" & a & "!")


    Schon einmal vielen Dank für die Antworten.

    Donnerstag, 23. November 2017 17:08

Antworten

  • Hallo Nalygas,

    statt immer die Mitte zwischen beiden Grenzen zu nehmen, kannst Du auch mit Zufallszahlen arbeiten.

    Sub Main()
    	Dim iLower As Integer
    	Dim iUpper As Integer
    	Dim r As New Random()
    
    	iLower = 0
    	iUpper = 100
    
    	Console.WriteLine("Denken Sie sich eine Zahl zwischen " & iLower & " und " & iUpper & " aus.")
    	Console.WriteLine("R die Zahl ist Richtig")
    	Console.WriteLine("G die gesuchte Zahl ist größer")
    	Console.WriteLine("K die gesuchte Zahl ist kleiner")
    
    	Dim iGuess As Integer
    	Dim strEingabe As String
    
    	Do
    		'iGuess = iLower + (iUpper - iLower) / 2
    		iGuess = r.Next(iLower, iUpper)
    		Console.WriteLine("Ist ihre Zahl " & iGuess & "?")
    		strEingabe = Console.ReadLine()
    		If strEingabe = "G" Then
    			iLower = iGuess + 1
    		Else
    			If strEingabe = "K" Then
    				iUpper = iGuess - 1
    			End If
    		End If
    
    	Loop Until strEingabe = "R"
    	Console.WriteLine("Die gesuchte Zahl war" & iGuess & "!")
    End Sub


    - Gruß Florian

    Freitag, 24. November 2017 08:34

Alle Antworten

  • Hi,
    im Programm sollte auch eine Abbruchmöglichkeit vorgesehen werden.

    Die Division erzeugt gebrochene Zahlen. Es sollte besser eine Ganzzahldivision oder das Runden auf eine ganze Zahl genutzt werden.

    In jedem Schleifendurchlauf werden immer die vorherigen Ober- und Untergrenze benötigt, um im nächsten Schleifendurchlauf den Prüfbereich einzuengen.

    Wenn der Bereich weit genug eingeengt ist, kann auch das Programm die Zahl "erraten".


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 24. November 2017 07:31
  • Hallo Nalygas,

    statt immer die Mitte zwischen beiden Grenzen zu nehmen, kannst Du auch mit Zufallszahlen arbeiten.

    Sub Main()
    	Dim iLower As Integer
    	Dim iUpper As Integer
    	Dim r As New Random()
    
    	iLower = 0
    	iUpper = 100
    
    	Console.WriteLine("Denken Sie sich eine Zahl zwischen " & iLower & " und " & iUpper & " aus.")
    	Console.WriteLine("R die Zahl ist Richtig")
    	Console.WriteLine("G die gesuchte Zahl ist größer")
    	Console.WriteLine("K die gesuchte Zahl ist kleiner")
    
    	Dim iGuess As Integer
    	Dim strEingabe As String
    
    	Do
    		'iGuess = iLower + (iUpper - iLower) / 2
    		iGuess = r.Next(iLower, iUpper)
    		Console.WriteLine("Ist ihre Zahl " & iGuess & "?")
    		strEingabe = Console.ReadLine()
    		If strEingabe = "G" Then
    			iLower = iGuess + 1
    		Else
    			If strEingabe = "K" Then
    				iUpper = iGuess - 1
    			End If
    		End If
    
    	Loop Until strEingabe = "R"
    	Console.WriteLine("Die gesuchte Zahl war" & iGuess & "!")
    End Sub


    - Gruß Florian

    Freitag, 24. November 2017 08:34