[Pascal] Smok Heighwaya fragment zadania

0

Mam problem z tym programem wywala mi błędy i nie wiem o co w nich chodzi Poniżej kod i sam program z góry dzięki za pomoc

program smok;
var
m,n,licznik,liczba : integer;
tablica : array [1..5001, 1..3] of integer;
xp1,xp2,yp1,yp2: integer;
uklad,ukladx,uklady: smallint;
xlos, ylos : integer;
xwylosowany,ywylosowany : real;
x,y:integer;
begin
randomize;
licznik:=0;
{LOSOWANIE 50000 liczb i dodawanie ich do tablicy}
repeat
inc(licznik);
tablica[licznik,1]:=licznik;
uklad:=random(3);
ukladx:=uklad;
uklady:=uklad;
xlos:=random(101);
xwylosowany:=xlos;
ylos:=random(101);
ywylosowany:=ylos;
case ukladx of
1 : x:=-0.4* xwylosowany-1;
2 : x:=0.76xwylosowany-0.4ywylosowany;
else writeln('blad');
case uklady of
1 : y:= 0.4ywylosowany+0.1;
2 : y:= 0.4
xwylosowany+0.76*ywylosowany;
else writeln('blad');
tablica[licznik,2]:=x;
tablica[licznik,3]:=y;
until tablica[licznik,1]=5000;
{Wyswietlanie i zapisywanie liczb w pliku zadaniex.txt}
licznik:=0;
repeat
inc(licznik);
write(tablica[licznik,2]);
writeln(tablica[licznik,3]);
until licznik=5000;
readln;
end.

[rapidshare.com/files/258398838/smok3.pas.html]

0

Witam,
Wybrałeś nieodpowiedni dział, temat nadaje się do Newbie, treść do kosza.
Nieprawidłowo opisałeś problem, nie napisałeś komunikatów błędów.
Kod nieczytelny, naucz się pisać posty, formatuj kod, kultura wymaga powitania .
Wśród błędów znalazły się nawet literówki <font size="3">LENIU</span>.
Naucz się podstaw Pascala [!!!]

program smok;
var
m,n,licznik,liczba : integer;
tablica : array [1..5001, 1..3] of Extended;
xp1,xp2,yp1,yp2: integer;
uklad,ukladx,uklady: smallint;
xlos, ylos : integer;
xwylosowany,ywylosowany : real;
x,y:Extended;
begin
randomize;
licznik:=0;
{LOSOWANIE 50000 liczb i dodawanie ich do tablicy}
repeat
  inc(licznik);
  tablica[licznik,1]:=licznik;
  uklad:=random(3);
  ukladx:=uklad;
  uklady:=uklad;
  xlos:=random(101);
  xwylosowany:=xlos;
  ylos:=random(101);
  ywylosowany:=ylos;
    case ukladx of
      1 : x:=-0.4*xwylosowany-1;
      2 : x:=0.76*xwylosowany-0.4*ywylosowany;
      else writeln('blad');
    end;
    case uklady of
     1 : y:= 0.4*ywylosowany+0.1;
     2 : y:= 0.4*xwylosowany+0.76*ywylosowany;
      else writeln('blad');
    end;
  tablica[licznik,2]:=x;
  tablica[licznik,3]:=y;
until tablica[licznik,1]=5000;
{Wyswietlanie i zapisywanie liczb w pliku zadaniex.txt}
licznik:=0;
repeat
  inc(licznik);
  write(tablica[licznik,2]);
  writeln(tablica[licznik,3]);
until licznik=5000;
readln;
end.
0

Grudziecki- Ale mnie pojechaleś zamkne się w sobie...
Temat jednak wybrałem przypadkowy.
Komunikatów błędów nie pisałem bo wywala mi ich kilka ale po to dałem link do programu żeby każdy mógl odpalić go i sprawdzić.
Literówki się mogły znaleŹć ale jak nad czymś siedzisz długo i zmieniasz co chwile coś w kodzie to takie blędy mogą się zdarzyć.
Jakieś tam podstawy mam, a ty zamiast pisać że zrąbałem coś napisalbyś dokładnie o co chodzi bo nie po to zwróciłem się na to forum o pomoc żeby ktoś mi powiedzial że nic nie umiem nie wnosząc nic do tematu.
Co do przywytania: Witam (chociaż to raczej nie ten tym komunikacji w którym powitanie jest wymagane, co innego jak bym pisal do Ciebie e-mail lub na gg)

Jak już sie "zapoznaliśmy" to może pomoŻesz mi?

0
program smok;
var
m,n,licznik,liczba : integer;
tablica : array [1..5001, 1..3] of real;//****  niezgodnosc typow
xp1,xp2,yp1,yp2: integer;
uklad,ukladx,uklady: smallint;
xlos, ylos : integer;
xwylosowany,ywylosowany : real;
x,y:real;                                      //***** niezgodnosc typow
{$APPTYPE CONSOLE}


begin
  { TODO -oUser -cConsole Main : Insert code here }

randomize;
licznik:=0;

{LOSOWANIE 50000 liczb i dodawanie ich do tablicy}
Repeat

  inc(licznik);
  tablica[licznik,1]:=licznik;
  uklad:=1+random(2);
  ukladx:=uklad;
  uklady:=uklad;
  randomize;
  xlos:=random(101);
  xwylosowany:=xlos;
  ylos:=random(101);
  ywylosowany:=ylos;
    case ukladx of
    1 : x:=-0.4* xwylosowany-1;
    2 : x:=0.76*xwylosowany-0.4*ywylosowany;
    else writeln('blad');
    end;                                                      //********brak zamkniecia funcji warunkowej

    case uklady of
     1 : y:= 0.4*ywylosowany+0.1;
     2 : y:= 0.4*xwylosowany+0.76*ywylosowany;
    else writeln('blad');
    end;                                                       //********brak zamkniecia funcji warunkowej

  tablica[licznik,2]:=x;
  tablica[licznik,3]:=y;

Until tablica[licznik,1]=5000;


{Wyswietlanie i zapisywanie liczb w pliku zadaniex.txt}
licznik:=0;


Repeat
  inc(licznik);
  write(tablica[licznik,2]);
  writeln(tablica[licznik,3]);

until  licznik=5000;
readln;

end.

Dawno się nie bawiłem Pascalem proszę działający program błędy zaznaczyłem.

Ponizej ich opis:
Incompatible types: 'Integer' and 'Real' - niekompatybilne typy całkowity i rzeczywisty (albo zmieniamy typ albo robimy konwersje
Missing operator or semicolon - brak średnika lub operatora (spowodowne patrz niżej)
'UNTIL' expected but 'END' found - znaleziono UNTIL spodziewano się END

proponije zajrzeć do
Case

Jedna rzecz którą pozwoliłem sobie poprawić
random(3) losuje liczby 0, 1, 2 a funkcje wyboru masz tylko dla 1 i 2 więc robimy 1+random(2), wówczas zbędne else writeln('blad'). Błąd logiczny nie pokazywał go interpreter.

0

ok dziala to co napisaleś dzięki

0

Wiem ze dziala bo sprawdzilem :)

Grudziecki nie wiem gdzie widziałeś literówki a w sumie wiem gdzie a tam nie było literówek tylko takie nazwy zmiennych. I kto tu postów nie czyta jedziesz kolesia a sam nawet nie ruszyłeś programu ... Do Newbie Cię wysłać [browar] [rotfl]

0

adydan, kod, który umieściłem w pierwszym poście, w przeciwieństwie do kodu autora KOMPILUJE SIĘ... Nie zauważyłeś? :-D

0

No nie zauważyłem bo autor poprosił nadal o pomoc :) i się zasugerowałem a byłem już trochę padniety. Nie wiem gdzie widziałeś literówki, no i zostawiłeś błędy logiczne których kompilator nie wywala. Jak już coś zrobić to dokładnie nawet jak długo się nie bawiłem w pascalu a w szczególności jeśli kod jest tak krótki no ale teraz już mamy dwa rozwiązania. Jedno częściowe i drugie pełne.

0

Ok wielkie dzięki wam obu. Już wiem gdzie były błędy i w sumie aż tak bardzo nie zrąbałem kodu jak bylko 4 byki [browar] . Jeśli chodzi o pascala to jestem początkujący, ucze się sam w domu i musze szybko nadrobić zaległości. Program jeszcze nie jest skończony w razie problemów odezwe się w tym temacie.
Pozdrawiam

0

Grudziecki- w tym algorytmie który wysłałeś na początku wywala błędy ale potem już w następnych liczbach jest ok.

adydan- w Twoim strasznie dużo liczb się powtarza ale poza tym wszystko ok. Może jeszcze dopisze do jednego i drugiego kod zapisując w pliku dane i sprawdze czy z punktów x i y powstanie smok.

Dzięki za pomoc [browar]

program smok;
var
m,n,licznik,liczba : integer;
tablica : array [1..5001, 1..3] of Extended;
xp1,xp2,yp1,yp2: integer;
uklad,ukladx,uklady: smallint;
xlos, ylos : integer;
xwylosowany,ywylosowany : real;
x,y:Extended;
begin
randomize;
licznik:=0;
{LOSOWANIE 50000 liczb i dodawanie ich do tablicy}
repeat
  inc(licznik);
  tablica[licznik,1]:=licznik;
  uklad:=1+random(2);
  ukladx:=uklad;
  uklady:=uklad;
  xlos:=random(101);
  xwylosowany:=xlos;
  ylos:=random(101);
  ywylosowany:=ylos;
    case ukladx of
      1 : x:=-0.4*xwylosowany-1;
      2 : x:=0.76*xwylosowany-0.4*ywylosowany;
      else writeln('blad');
    end;
    case uklady of
     1 : y:= 0.4*ywylosowany+0.1;
     2 : y:= 0.4*xwylosowany+0.76*ywylosowany;
      else writeln('blad');
    end;
  tablica[licznik,2]:=x;
  tablica[licznik,3]:=y;
until tablica[licznik,1]=5000;
{Wyswietlanie i zapisywanie liczb w pliku zadaniex.txt}
licznik:=0;
repeat
  inc(licznik);
  write(tablica[licznik,2]);
  writeln(tablica[licznik,3]);
until licznik=5000;
readln;
end.

Kod poprawiony! Wywalało w pierwszym algorytmie bład bo losowalo liczbe 3 której nie obejmowalo case więc tak jak radził adydan dodałem uklad:=1+random(2); do algorytmu Grudzieckiego i dziala wszytko pięknie ;]

0

...

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