witam, mam problem z moim programikiem, ktory ma za zadanie obliczac trajektorie rzutu ukosnego->wyrzucac wspolrzedne x,y. problem polega na tym ze program podaje najpierw jakas wysokosc maksymalna, a pozniej podajac wspolrzedne przy zmiennych y podaje wartosc wieksza niz wczesniej obliczona hmax, przy niektorych wartosciach, podaje y na minusach, wzory wydaja sie byc ok, wiec nie wiem gdzie jest problem, jesli ktos moglby mi pomoc to wielkie dzieki : )
program ukosny;
uses crt;
var m,g,tc,alfa,v,h,z,x,y,t: real;
Function Tg(alfa:real): real;
begin
Tg:= Sin(alfa)/Cos(alfa);
end;
begin
repeat write ('masa [kg] = ' );
readln (m);
if m<=0 then writeln('masa musi byc wieksza od 0');
until m>0;
repeat write ('kat pochylenia [C] = ');
readln(alfa);
if alfa<=0 then writeln('kat pochylenia musi byc wiekszy od 0');
until alfa>0 ;
repeat write ('predkosc poczatkowa [m/s] = ');
readln(v);
if v<=0 then writeln('predkosc poczatkowa musi byc wieksza od 0');
until v>0;
alfa:=alfaPi/180;
g:=9.81;
z:=(2cos(alfa)vsin(alfa)v)/g;
h:=(vvsin(alfa)sin(alfa)/2g)/100;
tc:=(2v*sin(alfa))/g;
writeln(' z= ',z3,' [m] - odleglosc upadku od miejsca strzalu');
writeln(' h= ',h3,' [m] - wysokosc maksymalna osiagnieta przez pocisk');
writeln(' tc= ',tc3,' [sek] - czas lotu do momentu upadku');
begin
x:=0;
t:=0;
repeat
t:=t+tc/10;
x:=vtcos(alfa);
y:=vtsin(alfa)-(g/2)*sqr(t);
writeln('x= ',x3,' y= ',y3);
until ((x>=z) and (y<=h));
end;
readln;
end.