Zasady rysowania rekurencyjnego.

0

Miałem ostatnio kolosa z PI i mieliśmy w pseudokodzie narysować fraktal używając komend turn(kat) , move(dlugosc) oraz rekurencji.W domu używałem do ćwiczenia fraktali biblioteki http://apcsteacher.com/reference/cpp/turtle_setup.htm.

Mieliśmy narysować takie drzewo

4

aha

0

Miałem ostatnio kolosa z PI i mieliśmy w pseudokodzie narysować fraktal używając komend turn(kat) , move(dlugosc) oraz rekurencji.W domu używałem do ćwiczenia fraktali biblioteki http://apcsteacher.com/reference/cpp/turtle_setup.htm.

Mieliśmy narysować takie drzewo user image gdzie funkcja jako argument pobiera stopnień rozgałęzienia oraz długość gałęzi początkowej.

Ja napisałem takie coś


#include "turtle.h"

void rysuj(turtle t,double bok,int n);

double k = 0.5;

int main()
{

    turtle t;

    rysuj(t,100,4);
    t.waitForMouseClick();
    return 0;

    system("pause");
}

void rysuj(turtle t,double bok,int n)
{
     if(n>0)
     {
            t.turn(90);
            sleep(200);
            t.move(bok);
            rysuj(t,bok*k,n-1);
            t.turn(180);
            sleep(200);
            t.move(2*bok);
            rysuj(t,bok*k,n-1);

     }
} 

I na komputerze wszystko mi działało jednak dostałem 3.
Byłem u Pani doktor się odwoływać ale ona stwierdziła

Sprawdziłam Pana (i pozostałych z Państwa) algorytm w Javie. Efekty są w załączniku.
Nie wiem na jakiej zasadzie działa biblioteka do C++, której Państwo użyli...ale nie jest to zgodne z zasadami rekurencyjnego rysowania...

Według niej kod powinien wyglądać tak:

WYWOŁANIE alg.koloTree(100, 3, 90, (float)0.7);
public void koloTree(int bok, int n, int alpha, float dim ){
if (n < 1) {
return;
}
right(alpha);
forward(bok);
koloTree((int)(bokdim), n-1, alpha, dim);
right(2
alpha);
forward(2bok);
koloTree((int)(bok
dim), n-1, alpha, dim);
back(bok); right(90);
}



I teraz mam pytanie czy biblioteka której ja używałam w rzeczywiście nie rysuje zgodnie z zasadami rekurencyjnego rysowania ?
0

ja na pewno bym Ci obniżył całą ocenę za to:
void rysuj(turtle t,double bok,int n);

powinno być przynajmniej tak:
void rysuj(turtle& t,double bok,int n);

za to kolejna ocena niżej:

        return 0;

        system("pause");

za zmienną globalną kolejna ocena w dół:
double k = 0.5;

myślę, że zasłużenie dostałeś 3.

0

Ale oceniała tylko algorytm rysowania. Całą reszta nie musiała być. Wiec czy ten algorytm jest dobry ?

0

jeśli te dwa parametry co są w jej wzorcowym programie, a w Twoim nie ma (int alpha, float dim) były w treści polecenia, to myślę, że o to właśnie chodzi. Jeśli algorytm rysuje prawidłowo dla większych liczb to prawie na pewno jest dobry. Jednak mimo wszystko odjąłbym Ci ocenę za kopiowanie rekurencyjnie obiektów.

0

Krw dzięki za pomoc ale tak jak pisałem chodziło o sam algorytm i ona sama powiedziała że według niej mój algorytm nie jest zgodny z zasadami rysowania rekurencyjnego. Według doktor to rysowanie z Javy jest prawidłowe. Cała reszta w tym wypadku dla nauczyciel jest nie istotna. Zamierzam dalej walczyć o poprawność mojego algorytmu. Tylko nie wiem jakie podać argumenty na to że mam racje. I czy w ogóle istnieją jakieś ogólne zasady rysowania rekurencyjnego o których doktor wspomniała.
W treści było polecenie jedyne że napisać pseudokod funkcji rekurencyjnej która przyjmuje długość boku początkowego i liczbę rozgałęzień

0

może spytaj jak ten kod powinien wyglądać w C++. Wykonujesz funkcję rekurencyjnie, w środku malujesz. Jeśli ocenia tylko algorytm rysujący, to poza brakiem tych dwóch parametrów wygląda tak samo. Może w Twoim głosie wyczuła, że kod skądś skopiowałeś.

0

Nawet nie było kopiować bo pisaliśmy to na kartkach. Zresztą więcej osób miało podobny problem. No nic pogadam jeszcze z drugim nauczycielem. Dzięki wielkie

0

tak w ogóle, to jak w zadaniu masz napisać funkcję która używa funkcji: turn(kat) , move(dlugosc) to używaj tych funkcji jakbyś już je miał/a i nie pisz całego kodu tylko funkcję rekurencyjną i sposób jej wywołania, a nie cały program. Czyli dokładnie tak jak podała Twoja nauczycielka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0