MitS Napisano Lipiec 14, 2009 Zgłoszenie Share Napisano Lipiec 14, 2009 (edytowane) Witam serdecznie, mam mały problem otóż przyszło mi pisać schematy blokowe programów i powiem szczerze - do tej pory tego nie robiłem a sprawa jest dość pilna dlatego też napisze pewną część wykreowany przykładu, która mnie dręczy i byłbym wdzięczny za odpowiedź jak taki schemat wykonać (dalej sobie poradzę). mamy program: #include <iostream> int fun1(int); int fun2(int); int main(){ count << "Wynik: " << fun1(10) << endl; return 1; } int fun1(int a){ if(a == 0) return 0; return a * fun2(1 ^ (a >> 1)); } int fun2(int a){ if(a == 0) return 1; return a + fun1(a - 1); } do tej pory wykonałem coś takiego: ale dalej nie wiem jak to ugryźć dlatego prosiłbym was o pomoc. Pozdrawiam ------------ Warto sprawdzić przed wysłaniem postu czy link działa. Do tego m.in. służy przycisk [Podgląd postu] pod polem edycji. Wkleiłeś miniaturkę obrazka nie podając linku do niego. Edytowane Lipiec 15, 2009 przez WalDo Podanie poprawnego linku do obrazka Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
@WalDo Napisano Lipiec 15, 2009 Zgłoszenie Share Napisano Lipiec 15, 2009 Takie uwagi na pierwszy rzut oka się nasuwają: "przypisz x=n" - nigdzie w kodzie nie występuje "x" ani "n". Parametr "a" ma przypisana stałą, więc chyba w prostokąciku "a=10". "Czy x==0?" - za moich czasów nie stosowano notacji danego języka, więc porównanie nie z C ("==") tylko pojedynczy znak równości (ale to się mogło zmienić). Na pewno nie powinno być w bloku decyzyjnym słówka "czy". Wg mnie po prostu "a=0". No i oczywiście na rysunku brak "domknięcia" decyzji - co się dzieje gdy a!=0? Każda decyzja i pętla musi być zakończona. Ale poczekaj, niech inni się wypowiedzą, bo schematów blokowych wieki nie pisałem. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
MitS Napisano Lipiec 15, 2009 Autor Zgłoszenie Share Napisano Lipiec 15, 2009 faktycznie nie pozmieniałem literek (bo ten x to z pełnego kodu jest a ja dałem tylko wycinek i musiałem pozmieniać by zadziałało ). Co do podpowiedzi dzięki na pewno się przydadzą nie mniej jednak właśnie zależy mi na dokończeniu algorytmu w przypadku gdy a!=0 (tam jest rekurencja i nie do końca wiem jak to mam zobrazować) Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
jjj Napisano Lipiec 15, 2009 Zgłoszenie Share Napisano Lipiec 15, 2009 W prostokątach umieszczasz instrukcje proste. Mim zdaniem, wejście powinno być w równoległoboku, podobnie jak wyjście. Założenia co do danych (w mądrym języku zwane asercjami) nie są częścią wejścia. Ja bym pisał asercje w postaci komentarzy, w klamrach przytwierdzonych do strzałek na schemacie. Twój kod posługuje się rekursją, a najwyraźniej zamierzasz przedstawić schemat iteracyjny. Są dwie możliwości: albo zachowujesz rekursywność, co wymaga zdefiniowania schematów dla fun1 i fun2, i następnie odwołania się do nich w głównym schemacie, albo przekształcasz algorytm na równoważny, lecz iteracyjny. To pierwsze może być zabronione w narzuconej Ci konwencji, to drugie jest wykonalne tylko w szczególnych przypadkach rekursji. Co do zestawu symboli, nie jest istotne czy używasz = i == , czy ? i = , czy := i = . Ważne, żeby zachować jednoznaczność. Odnośnik do komentarza Udostępnij na innych stronach More sharing options...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się