ALG1

ALG1



i 2.10. Rozwiązania i wskazówki do zadań 51

Zad. 2-3

Program nie należy do zbyt skomplikowanych, choć wcale nie jest trywialny. Zastanówmy się, jak zmusić algorytm do przedstawienia wyniku w postaci normalnej, tzn. od lewej do prawej. W tym celu przeanalizujmy raz jeszcze działanie algorytmu bazującego na dzieleniu przez podstawę systemu liczbowego (tutaj 2). Liczba x jest dzielona przez dwa, co daje nam liczbę [x div 2] plus reszta. Owa reszta to oczywiście [x mod 2] i jest to jednocześnie ostatnia cyfra reprezentacji binarnej, którą chcemy otrzymać.

Czy jest jakiś sposób, aby odwrócić kolejność wyprowadzania cyfr dwójkowych, korzystając ciągle z tego prostego algorytmu? Otóż tak, pod warunkiem, że spojrzymy nań nieco inaczej. Popatrzmy, jak symbolicznie można rozpisać tworzenie reprezentacji dwójkowej pewnej liczby x, używając już właściwych dla C-H- operatorów:

[x], =[x%2][x 11\2

Zapis ten sugeruje już, jak można rekurcncyjnie przedstawić ten algorytm:

przypadek elementarny wywołanie rekuicncyjnc





Jeśli w powyższym algorytmie każemy komputerowi wpierw wypisać liczbę [x/21 dwójkowo, a dopiero potem [x%2] (które to wyrażenie przybiera dwie wartości: 0 lub /), to wynik pojawi się na ekranie w postaci normalnej, a nie odwrócony jak poprzednio.

Warto zapamiętać tę sztuczkę, może być ona pomocna w wielu innych programach

post_2.cpp


void post_dw(unsigned long int n)

(

if(n!=0)

f

post_aw(n/2);    // n modulo 2

cout « n % 2; // reszta z dzielenia przez 2

i

Co zaś się tyczy pytania drugiego, to z mojej strony mogę dać na nie odpowiedź: być może. Rozwiązałem ten problem z użyciem rckurcncji „z parametrem dodatkowym”, ale nic udało mi się znaleźć rozwiązania na tyle eleganckiego, aby hyło warte prezentacji jako odpowiedź. Być może któryś z Czytelników znajdzie więcej czasu i dokona lego wyczynu? Gorąco zachęcam do prób - być może do niczego nic doprowadzą, ale na pewno więcej nauczą niż lektura gotowych rozwiązań.


Wyszukiwarka

Podobne podstrony:
ALG9 3.9. Rozwiązania i wskazówki do zadań 79 ETAP 5 Poszukiwanie ostatecznego rozwiązania: Poszuki
ALG3 5.10. Rozwiązania zadań 163 W danym przypadku koszt wzrósł o ok. 36 % pierwotnej zajętości pam
rozdział 2 tom 11 2.10.9. Dodatki i współczynnik do tabeli 38.2. Symbol Warunki
DSC00194 (10) Rozwiązania gier 2xn lub m x2 Jeili nie ma punktu siodłowego, to rozwiązanie gry 2 .&l
ALG1 5.5. Sterty i kolejki priorytetowe 141 Treść procedury DoGory nie powinna stanowić niespodzian
żyć pod jej wpływem i pragnie do niej należeć, choć wcale nie musi być jej członkiem, -normatywna gr
Wskazówki do rozwiązania zadań kolokwium 2. Zadanie 1 la - nie zachodzi, lb - prawidłowa, lc -
476 2 476 12. Rozwiązania zadań 9 DO 2 1 = 2, N 10 IM 1=1-1 11 DO 2 K = 1,
Przygotowanie się do wykładów 10 Przygotowanie się do zajęć i rozwiązanie zadań
7. Wskazówki do niektórych ćwiczeń i zadań oraz rozwiązania Ćwiczenie 3 (str. 66) - odpowiedź:
2. Rozumienie tekstów pisanych 19 Wskazówki do rozwiązania zadania Zadanie 9. Przeczytaj tekst, z
17 Rozwiązanie Na podstawie wzoru 4,3 obliczamy najmniejszy nacisk powierzchniowy niezbędny do prze
2013 03 22 964 rozwiązanie •    wyjściowy roztwór KOH został rozcieńczony 10 x (

więcej podobnych podstron