[algorytmy] zmiana binarny/dziesiętny i rekurencja

vinci2
Użytkownik
Użytkownik
Posty: 42
Rejestracja: 19 sty 2013, o 20:11
Płeć: Mężczyzna
Lokalizacja: Konin
Podziękował: 18 razy

[algorytmy] zmiana binarny/dziesiętny i rekurencja

Post autor: vinci2 »

Witam!
Mam kilka pytań dotyczących zapisu algorytmów w postaci listy kroków.

1. Czy pisząc algorytm programu który wykonuje jakieś operacje na liczbach dziesiętnych, a na końcu wyświetla wynik w postaci binarnej muszę rozpisywać jak odbywa się zamiana zapisu dziesiętnego na binarny? Chodzi mi o to, że użytkownik podaje jakąś liczbę, potem algorytm wykonuje na niej jakieś działanie i na końcu wypisuje wynik w postaci binarnej.

Mogę ten krok w którym dokonuje się zamiana zapisać tak jak niżej?

Kod: Zaznacz cały

zamieniam wartość zmiennej LICZBA na postać binarną
Czy to nie jest zbyt ogólny zapis? Jutro piszę maturkę z infy i tak się zastanawiam czy takie rzeczy też rozpisywać, żeby egzaminator wiedział, że ja to umiem czy wystarczy taki zapis.


2. Jak zapisać algorytm wykonujący jakieś działanie metodą rekurencyjną w postaci listy kroków? Przykładowo niech to będzie wyznaczenie n-tego wyrazu ciągu Fibonacciego

W C++ po prostu napisałbym funckję rekurencyjną i przy każdym jej wywołaniu wiadomo by było, że wykona się kod który jest w klamerkach (w ciele tej funkcji), ale nie wiem jak ma to wyglądać w liście kroków. Mogę też zrobić coś a la funkcja z C++? Np.

Kod: Zaznacz cały

n-ta liczba ciągu Fibonacciego

krok 1. Podaj n
krok 2. wywołaj funkcję Fib(n)
        Lista kroków funkcji Fib(n)
        2.1 Jeśli n ≤ 1, to zwróć n i zakończ funkcję
        2.2 Zwróć Fib(n - 2) + Fib(n - 1) i zakończ funkcję
krok 3. wypisz warotść funkcji fib(n) i zakończ program
Edycja: Pomijamy oczywiście wydajność powyższego algorytmu (wiem, że są lepsze metody wyznaczenie n-tego wyrazu ciągu Fibonacciego). Chodzi mi o sam zapis funkcji rekurencyjnej w postaci listy kroków.
Maciej94
Użytkownik
Użytkownik
Posty: 73
Rejestracja: 11 gru 2010, o 12:46
Płeć: Mężczyzna
Lokalizacja: Poznań
Podziękował: 7 razy
Pomógł: 4 razy

[algorytmy] zmiana binarny/dziesiętny i rekurencja

Post autor: Maciej94 »

1. Myślę że to bardziej by przeszło w pseudokodzie. Jeśli już chciałbyś operować na liczbach binarnych, to tylko na nich bez wprowadzania dziesiętnych (chyba, że stworzysz jakąś funkcje, która konwertuje z bin na dec).
2. Lista kroków? Co prawda średnio się znam na zapisywaniu tym sposobem algorytmów, ale Twój zapis wydaje się być w porządku. Myślę, że szybszy byłby schemat blokowy, bo jest bardzo intuicyjny, tylko trzeba kształty zapamiętać.
... A jak nie jesteś pewien poprawności zawsze możesz napisać:

Kod: Zaznacz cały

int fib(int n)
{
	if(n==1)return 1;
	else return fib(n-2)+fib(n-1);
}
Taki sposób jest na 75% dozwolony, bo w zadaniu możesz się posłużyć językiem programowania.
vinci2
Użytkownik
Użytkownik
Posty: 42
Rejestracja: 19 sty 2013, o 20:11
Płeć: Mężczyzna
Lokalizacja: Konin
Podziękował: 18 razy

[algorytmy] zmiana binarny/dziesiętny i rekurencja

Post autor: vinci2 »

Dzięki za odpowiedź!

Co do 1. to po prostu w zadaniu było tak, że do programu jest wprowadzana dziesiętna, coś tam się z nią dzieje i ma wyjść binarna. Nie pamiętam dokładnie które to zadanie, ale to było na części pisemnej matury z infy.

Co do 2. to wiem jak to zapisać w C++, ale trochę się obawiam, że jak będzie do napisania jakiś skomplikowany algorytm to zapomnę gdzieś średnika czy coś i po punktach polecą... Wolę zapisać w liście kroków o ile ten zapis, który podałem jest poprawny.
ODPOWIEDZ