Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych. Autor artykułu: mgr Jerzy Wałaszek, wersja1.0 |
©2008 mgr
Jerzy Wałaszek |
Zapoznaj się z następującymi artykułami z naszego Serwisu Edukacyjnego:
Naturalny system dwójkowy
Operacje bitowe w C++
Program działa następująco:
Gracz wymyśla liczbę z zakresu od 0 do 15. Następnie w 4 turach komputer prezentuje graczowi zestaw liczb i zadaje pytanie, czy wymyślona przez gracza liczba jest w tym zestawie. Prezentowane liczby posiadają taką cechę, iż wszystkie mają ustawiony na 1 określony bit w swoim zapisie binarnym. Komputer zbiera informację o tych bitach i na jej podstawie odtwarza wymyśloną liczbę.
Na przykład:
Wymyślam liczbę 13. Liczba ta w zapisie dwójkowym ma postać 1101. Komputer przygotowuje zmienną na odgadywaną liczbę i ustawia w niej bity na 0: 0000. Następnie 4 czterech turach zadaje pytanie, czy moja liczba jest wśród liczb przedstawionych w oknie konsoli.
Pierwsza tura - liczby 0...15, które w zapisie dwójkowym mają ustawiony na 1 bit b3:
1000 - 8
Moja odpowiedź - TAK. Komputer ustawia w zmiennej bit b3 -
1000.
1001 - 9
1010 - 10
1011 - 11
1100 - 12
1101 - 13 - moja liczba!!!
1110 - 14
1111 - 15
Druga tura - liczby 0...15, które w zapisie dwójkowym mają ustawiony na 1 bit b2:
0100 - 4
Moja odpowiedź - TAK. Komputer ustawia w zmiennej bit b2 - 1100.
0101 - 5
0110 - 6
0111 - 7
1100 - 12
1101 - 13 - moja liczba!!!
1110 - 14
1111 - 15
Trzecia tura - liczby 0...15, które w zapisie dwójkowym mają ustawiony na 1 bit b1:
0010 - 2
Moja odpowiedź - NIE. Komputer pozostawia zmienną bez zmian - 1100.
0011 - 3
0110 - 6
0111 - 7
1010 - 10
1011 - 11
1110 - 14
1111 - 15
Pierwsza tura - liczby 0...15, które w zapisie dwójkowym mają ustawiony na 1 bit b0:
0001 - 1
Moja odpowiedź - TAK. Komputer ustawia w zmiennej bit b0 - 1101.
0011 - 3
0101 - 5
0111 - 7
1001 - 9
1011 - 11
1101 - 13 - moja liczba!!!
1111 - 15
Zwróć uwagę, iż 1101 oznacza w systemie dwójkowym liczbę 13, czyli moją liczbę.
// Zgadywanka liczbowa // (C)2008 Koło informatyczne w I LO w Tarnowie // Kurs programowania w C++ dla początkujących //-------------------------------------------- #include <iostream> #include <iomanip> using namespace std; main() { int v,i,m; char c; cout << "***************************\n" "*** Zgadywanka liczbowa ***\n" "***************************\n\n" "Wymysl sobie liczbe od 0 do 15\n\n"; system("pause"); cout << endl << endl; // odgadujemy liczbę wymyśloną przez gracza for(m = 8, v = 0; m; m >>= 1) { for(i = 1; i < 16; i++) if(i & m) cout << setw(3) << i; cout << " : czy twoja liczba jest tutaj? (t = TAK) : "; cin >> c; cout << endl; if(c == 't') v += m; } cout << "Twoja liczba to " << v << endl << endl; system("pause"); } |
*************************** *** Zgadywanka liczbowa *** *************************** Wymysl sobie liczbe od 0 do 15 Aby kontynuować, naciśnij dowolny klawisz . . . 8 9 10 11 12 13 14 15 : czy twoja liczba jest tutaj? (t = TAK) : t 4 5 6 7 12 13 14 15 : czy twoja liczba jest tutaj? (t = TAK) : t 2 3 6 7 10 11 14 15 : czy twoja liczba jest tutaj? (t = TAK) : n 1 3 5 7 9 11 13 15 : czy twoja liczba jest tutaj? (t = TAK) : t Twoja liczba to 13 Aby kontynuować, naciśnij dowolny klawisz . . . |
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe