Turbo Pascal-problem z programem


(Margoo2) #1

Witam !!

Mam problem z napisaniem programu, który ma za zadanie zbudować na ekranie obraz pewnej liczby wielokątów foremnych obróconych o pewien kąt i zagłębionych w siebie.

Proszę Was o sprawdzenie mojego programu i podpowiedź jak mogę dalej go pisać, ponieważ nie mam już pomysłów. Korzystam z kompilatora FreePascal 2.0.0.

Dołączam kod programu:

Z góry dziękuję za pomoc.

Dodam na marginesie, że jestem osobą początkującą w programowaniu.


(Gina Gina) #2

Na początek chyba jak dla Ciebie to skok na zbyt głęboką wodę.

Musisz poznać sposób przypisywania typów zmiennych -

do wykorzystywanych funkcji oraz umieć tworzyć własne procedury

i funkcje, programowanie to algorytmy - od tego nie uciekniesz

Najważniejsza jest umiejętność debugowania ,z tym należy

zaczynać od TP7.

Polecam poświęcić trochę czasu na TP7 i Dev-Pascal (1.9.2)

to pozwoli "podciągnąc" poziom :spoko:

Poniżej Twój program (taki jak jest - czyli nie działający- ale publikowany

w sposób przyjety - wcięcia strukturalne i ujęty w "code"

Program Zaglebione_wielokaty;

uses Graph;

var

  Driver,Mode,i,r,j,v,f,w,n: integer;

  omega,omega1,a,b,c,d,a1,b1,c1,d1: integer;

  xa,ya,x1,y1,k1,w1,x2,y2,k2,w2,x,y: integer;

  { Gdzie:

    r - promien okregu opisanego na wielokacie,

    v - ilosc wierzcholkow wielokata;

    f - kat obrotu wielokata,

    w - wspolczynnik redukcyjny,

    n - ilosc wielokatow,

  }

  Pixel: word;

begin

{ tryb graficzny }

  Driver:=Detect;

  InitGraph(Driver,Mode,'');

  { wprowadzanie danych przez uzytkownika }

  writeln('Podaj promien okregu opisanego na wielokącie: ');

  readln(r);

  writeln('Podaj ilosc wierzcholkow wielokata: ');

  readln(v);

  writeln('Ppdaj kat o jaki wielokat ma sie obracac: ');

  readln(f);

  writeln('Podaj wspolczynnik redukcyjny: ');

  readln(w);

  writeln('Ile ma byc wielokatow? Podaj ich liczbe: ');

  readln(n);

{ obliczenia }

{ wspolczynnik wielokata }

  omega:=2*3.14/n;

  a:=cos(omega);

  b:=-sin(omega);

  c:=-b;

  d:=a;

{ wspolczynnik obrotu }

  omega1:=f*3.14/180;

  a1:=w*cos(omega1);

  b1:=-w*sin(omega1);

  c1:=-b1;

  d1:=a1;

  xa:=r;

  ya:=0;

{ petle }

  for j:=1 to v do

  begin

    x1:=xa;

    y1:=ya;

    k1:=x1+512;

    w1:=-y1+384;

    for i:=1 to n do

    begin

      x2:=a*x1+b*y1;

      y2:=c*x1+d*y1;

      k2:=x2+512;

      w2:=-y2+384;

      line(k1,w1,k2,w2,14);

    end;

    x:=xa;

    y:=ya;

    xa:=a1*x+b1*y;

    ya:=c1*x+d1*y;

  end;

  readln;

end.

(Margoo2) #3

Dziękuję za zwrócenie uwagi, że użyłam złych tagów (nie wiedziałam).

A co do programowania, to niestety, ale taką mam zadaną pracę, którą muszę napisać. Miałam nadzieję, że ktoś z Was podsunie mi pomysł jak ten program inaczej napisać albo pokaże błędy, które zrobiłam. Sama nie mam już pojęcia, jak to zrobić.

Pozdrawiam...