Benutzer mit den meisten Antworten
Visual Basic Computer errät Zahl

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.
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
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 27. November 2017 09:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 6. Dezember 2017 11:46
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 -
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
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 27. November 2017 09:27
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 6. Dezember 2017 11:46