Strona główna » Algorytmy » Artykuły » Zgadnij liczbę
 

Zgadnij liczbę

Cel

Napisz aplikację uruchamianą w konsoli Windows, która po uruchomieniu przyjmie dwie liczby całkowite, które będą zakresem z którego zostanie wylosowana liczba, a następnie program podając proste wskazówki pomoże nam zgadnąć liczbę. Po wpisaniu prawidłowej liczby należy wypisać komunikat o wpisaniu poprawnej odpowiedzi.

Strategia zgadywania

Wyobraźmy sobie listę liczb z zakresu [a, b]. Wylosowana liczba znajduje się na tej liście na pewnej pozycji. Najszybszym sposobem będzie określenie w której części listy szukać. Tutaj warto zastosować schemat Wyszukiwania Binarnego, ponieważ w każdym kroku będziemy odrzucać połowę pozostałych liczb na liście. Istnieje też szansa na trafienie liczby podczas zwężania zakresu.

Implementacja

Założenia

Do programu zostaną dołączone biblioteki ctime oraz cstdlib, które pozwolą na skorzystanie z funkcji rand(), która będzie generowała pseudolosowe liczby na podstawie czasu systemu.

Rozwiązanie

C++
C#
  1. static void Main(string[] args) {
  2.   int a, b, r, g;
  3.   Console.WriteLine("Podaj dolne ograniczenie zakresu:");
  4.   a = Convert.ToInt32(Console.ReadLine());
  5.   Console.WriteLine("Podaj górne ograniczenie zakresu:");
  6.   b = Convert.ToInt32(Console.ReadLine());
  7.   Random rand = new Random();
  8.   r = rand.Next(a, b + 1);
  9.   Console.WriteLine("Zgadnij liczbę");
  10.   do {
  11.     g = Convert.ToInt32(Console.ReadLine());
  12.     if (r != g)
  13.       Console.WriteLine(((r < g) ? "za duża" : "za mała"));
  14.   } while (r != g);
  15.   Console.WriteLine("Brawo zgadłeś liczbę!");
  16.   Console.ReadKey();
  17. }

(2.) Deklarujemy zmienne, które oznaczają kolejno: a - dolna granica zakresu, b - górna granica zakresu, g - ostatnie wpisane rozwiązanie i r oznaczające liczbę, którą użytkownik ma zgadnąć. Następnie (3. - 6.) wczytujemy zakres losowania i (7. - 8.) losujemy pewną liczbę co (9.) potwierdzamy użytkowniki instrukcją.

(10.) W pętli do .. while (11.) wczytywane są kolejne typy użytkownika. Jeśli (12.) nie odgadł liczby to: (13.) wyświetlamy instrukcję jaka jest wprowadzona liczba względem odpowiedzi. Pętla działa (14.) dopóki wczytana liczba różni się od liczby do zgadnięcia. Po przrwaniu pętli (15.) wypisz na ekran komunikat o znalezieniu odpowiedzi.