GeeksforGeeks
Większość maniaków z CS (Informatyka) tle, myśleć o ich pierwszym projekcie po zrobieniu języka programowania. Tutaj otrzymasz swój pierwszy projekt i podstawowy, w tym artykule.
zadanie: poniżej znajdują się kroki:
- Zbuduj grę zgadywania liczb,w której użytkownik wybiera zakres.
- powiedzmy, że użytkownik wybrał zakres, tzn. od A do B, gdzie A i B należą do liczby całkowitej.
- niektóre liczby całkowite zostaną wybrane przez system i użytkownik musi odgadnąć tę liczbę w minimalnej liczbie domysłów
Analiza:
Wyjaśnienie 1: Jeśli użytkownik wprowadza zakres, powiedzmy od 1 do 100. I kompilator losowo wybrany 42 jako liczba całkowita. I teraz zaczęła się zgadywanka, więc użytkownik wpisał 50 jako swój pierwszy domysł. Kompilator pokazuje „Try Again! Zgadłeś zbyt wysoko”. Oznacza to, że liczba losowa (tj. 42) nie mieści się w zakresie od 50 do 100. Takie jest znaczenie zgadywania połowy zasięgu. I znowu użytkownik zgaduje połowę z 50 (możesz mi powiedzieć dlaczego?). Więc połowa z 50 to 25. Użytkownik wpisuje 25 jako swoje drugie przypuszczenie. Tym razem kompilator pokaże: „spróbuj ponownie! Zgadłeś zbyt mały”. Oznacza to, że liczby całkowite mniejsze niż 25 (od 1 do 25) są bezużyteczne do odgadnięcia. Teraz zakres dla użytkownika zgadywania jest krótszy, tj. od 25 do 50. Inteligentnie! Użytkownik odgadł połowę tego zakresu, tak, że użytkownik odgadł 37 jako swoje trzecie odgadnięcie. Tym razem kompilator pokazuje wyjście ” Try Again! Zgadłeś zbyt mały”. Dla użytkownika, zakres zgadywania jest coraz mniejszy przez każde zgadnięcie. Teraz, zakres zgadywania dla użytkownika wynosi od 37 do 50, dla którego użytkownik odgadł 43 jako swoje czwarte zgadywanie. Tym razem kompilator wyświetli komunikat ” Try Again! Zgadłeś zbyt wysoko”. Tak więc nowy zakres zgadywania dla użytkowników będzie wynosić od 37 do 43, ponownie dla którego użytkownik odgadł połowę tego zakresu, czyli 40 jako piąte zgadywanie. Tym razem kompilator pokazuje wyjście ” Try Again! Zgadłeś zbyt mały”. Pozostawiając przypuszczenie jeszcze mniejsze, takie, że od 41 do 43. A teraz użytkownik odgadł 41 jako swoje szóste odgadnięcie. Co jest błędne i pokazuje wyjście ” spróbuj ponownie! Zgadłeś zbyt mały”. I wreszcie, użytkownik odgadł właściwą liczbę, która jest 42 jako jego / jej siódme odgadnięcie.
całkowita liczba domysłów = 7
Wyjaśnienie 2: Jeśli zakres danych wejściowych użytkownika, powiedzmy od 1 do 50. I kompilator losowo wybrany 42 jako liczba całkowita. A teraz zaczęła się zgadywanka. Więc połowa z 50 to 25. Użytkownik wpisuje 25 jako swoje pierwsze przypuszczenie. Tym razem kompilator pokaże: „spróbuj ponownie! Zgadłeś zbyt mały”. Oznacza to, że liczby całkowite mniejsze niż 25 (od 1 do 25) są bezużyteczne do odgadnięcia. Teraz zakres dla użytkownika zgadywania jest krótszy, tj. od 25 do 50. Inteligentnie! Użytkownik odgadł połowę tego zakresu, tak że użytkownik odgadł 37 jako swoje drugie zgadnięcie. Tym razem kompilator pokazuje wyjście ” Try Again! Zgadłeś zbyt mały”. Dla użytkownika, zakres zgadywania jest coraz mniejszy przez każde zgadnięcie. Teraz, zakres zgadywania dla użytkownika wynosi od 37 do 50, dla których użytkownik odgadł 43 jako swoje trzecie zgadywanie. Tym razem kompilator wyświetli komunikat ” Try Again! Zgadłeś zbyt wysoko”. Tak więc nowy zakres zgadywania dla użytkowników będzie wynosił od 37 do 43, ponownie dla którego użytkownik odgadł połowę tego zakresu, czyli 40 jako czwarte zgadywanie. Tym razem kompilator pokazuje wyjście ” Try Again! Zgadłeś zbyt mały”. Pozostawiając przypuszczenie jeszcze mniejsze, takie, że od 41 do 43. A teraz użytkownik odgadł 41 jako swój piąty strzał. Co jest błędne i pokazuje wyjście ” spróbuj ponownie! Zgadłeś zbyt mały”. I wreszcie, użytkownik odgadł właściwą liczbę, która jest 42 jako jego / jej szóste odgadnięcie.
całkowita liczba domysłów = 6
więc minimalna liczba domysłów zależy od zakresu. Kompilator musi sam obliczyć minimalną liczbę odgadnięć, zależną od zakresu. Do tego mamy wzór:-
minimalna liczba zgadywanek = log2 (górna granica-dolna granica + 1)
algorytm: Poniżej znajdują się kroki:
- użytkownik wprowadza dolną i górną granicę zakresu.
- kompilator generuje losową liczbę całkowitą pomiędzy zakresem i przechowuje ją w zmiennej dla przyszłych odniesień.
- w przypadku powtarzalnego zgadywania inicjowana jest pętla while.
- jeśli użytkownik odgadnie liczbę większą niż losowo wybrana liczba, użytkownik otrzyma wynik „spróbuj ponownie! Odgadłeś zbyt wysoki ”
- w przeciwnym razie jeśli użytkownik odgadł liczbę mniejszą niż losowo wybrana liczba, użytkownik otrzyma wynik „spróbuj ponownie! Zgadłeś zbyt mały „
- a jeśli użytkownik odgadł w minimalnej liczbie domysłów, użytkownik dostaje ” Gratulacje! „Wyjście.
- w przeciwnym razie, jeśli użytkownik nie odgadł liczby całkowitej w minimalnej liczbie domysłów, otrzyma ” powodzenia następnym razem!”wyjście.
Poniżej znajduje się implementacja algorytmu:
import
random
import
math
lower
=
int
(
input
(
"Enter Lower bound:- "
))
upper
=
int
(
input
(
"Enter Upper bound:- "
))
x
=
random.randint(lower, upper)
print
(
"\n\tYou've only "
,
round
(math.log(upper
-
lower
+
1
,
2
)),
" chances to guess the integer!\n"
)
count
=
0
while
count < math.log(upper
-
lower
+
1
,
2
):
count
+
=
1
guess
=
int
(
input
(
"Guess a number:- "
))
if
x
=
=
guess:
print
(
"Congratulations you did it in "
,
count,
" try"
)
break
elif
x > guess:
print
(
"You guessed too small!"
)
elif
x < guess:
print
(
"You Guessed too high!"
)
if
count >
=
math.log(upper
-
lower
+
1
,
2
):
print
(
"\nThe number is %d"
%
x)
print
(
"\tBetter Luck Next time!"
)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int
main()
{
int
number, guess, nguesses=1;
srand
(
time
(0));
number =
rand
()%100 + 1;
do
{
printf
(
"Guess the number between 1 to 100\n"
);
scanf
(
"%d"
, &guess);
if
(guess>number)
{
printf
(
"you guessed to high\n"
);
}
else
if
(guess<number)
{
printf
(
"you guessed too low\n"
);
}
else
{
printf
(
"You guessed the correct number"
);
printf
(
"attempts : %d\n"
, nguesses);
}
nguesses++;
}
while
(guess!=number);
return
0;
}
wyjście: Poniżej znajduje się wyjście powyższego programu