Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- PRS_2010_1.pas
- Copyright 2010 Maciej Czekaj <natanielcz@gmail.com>
- }
- program PRS_2010_1;
- uses crt;
- type
- tablica = array[0..2] of real;
- const
- zapetlaj : boolean = true;
- zapetlaj2: boolean = true;
- var
- wybor : integer;
- a,b,c,x1,x2,x3,y1,y2,y3,z1,z2,z3,kat_alfa,kat_beta,kat_gamma, pole_trojkata : real;
- abc:tablica;
- function sortuj_boki(a,b,c:real):tablica;
- begin
- if (a > b) and (a > c) and (b > c) then
- begin
- sortuj_boki[0] := a;
- sortuj_boki[1] := b;
- sortuj_boki[2] := c
- end
- else if (a > b) and (a > c) and (b < c) then
- begin
- sortuj_boki[0] := a;
- sortuj_boki[1] := c;
- sortuj_boki[2] := b;
- end
- else if (a > b) and (a < c) then
- begin
- sortuj_boki[0] := c;
- sortuj_boki[1] := a;
- sortuj_boki[2] := b
- end else if (a < b) and (a > c) then
- begin
- sortuj_boki[0] := b;
- sortuj_boki[1] := a;
- sortuj_boki[2] := c
- end
- else if (a < b) and (a < c) and (b < c) then
- begin
- sortuj_boki[0] := c;
- sortuj_boki[1] := b;
- sortuj_boki[2] := a
- end
- else if (a < b) and (a < c) and (b > c) then
- begin
- sortuj_boki[0] := b;
- sortuj_boki[1] := c;
- sortuj_boki[2] := a
- end
- else if (a = b) and (a > c) then
- begin
- sortuj_boki[0] := a;
- sortuj_boki[1] := b;
- sortuj_boki[2] := c
- end
- else if (a = b) and (a < c) then
- begin
- sortuj_boki[0] := c;
- sortuj_boki[1] := a;
- sortuj_boki[2] := b
- end
- else if (b = c) and (a > b) then
- begin
- sortuj_boki[0] := a;
- sortuj_boki[1] := b;
- sortuj_boki[2] := c
- end
- else if (b = c) and (a < b) then
- begin
- sortuj_boki[0] := b;
- sortuj_boki[1] := c;
- sortuj_boki[2] := a
- end
- else if (a = c) and (a > b) then
- begin
- sortuj_boki[0] := a;
- sortuj_boki[1] := c;
- sortuj_boki[2] := b
- end
- else
- begin
- sortuj_boki[0] := b;
- sortuj_boki[1] := a;
- sortuj_boki[2] := c
- end
- end;
- BEGIN
- while zapetlaj = true do
- begin
- writeln('1 - podaj dlugosci bokow');
- writeln('2 - podaj wspolrzedne wierzcholkow w 2D');
- writeln('3 - podaj wspolrzedne wierzcholkow w 3D');
- read(wybor);
- clrscr;
- if wybor = 1 then while zapetlaj2 = true do
- begin
- { Ustalenie długości boków - początek }
- write('a=');
- readln(a);
- write('b=');
- readln(b);
- write('c=');
- readln(c);
- abc := sortuj_boki(a,b,c);
- a := abc[2];
- b := abc[1];
- c := abc[0];
- { Ustalenie długości boków - koniec }
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- if (a+b=c) or (a+b>c) then break
- else clrscr;
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- end
- else if wybor = 2 then
- while zapetlaj2 = true do
- begin
- { Ustalenie położenia wierzchołków - początek }
- writeln('Pierwszy wierzchołek:');
- write('x=');
- readln(x1);
- write('y=');
- readln(y1);
- writeln('Drugi wierzchołek:');
- write('x=');
- readln(x2);
- write('y=');
- readln(y2);
- writeln('Trzeci wierzchołek:');
- write('x=');
- readln(x3);
- write('y=');
- readln(y3);
- { Ustalenie położenia wierzchołków - początek }
- { Obliczanie długości boków na podstawie podanych wierzchołków - początek }
- { sqrt(liczba) - pierwiastek z liczby
- * fabs(liczba) - wartość bezwzględna z liczby
- * sqr(liczba) - kwadrat liczby }
- a := sqrt(abs(sqr(x2-x1)) + abs(sqr(y2-y1)));
- b := sqrt(abs(sqr(x3-x2)) + abs(sqr(y3-y2)));
- c := sqrt(abs(sqr(x1-x3)) + abs(sqr(y1-y3)));
- { Obliczanie długości boków na podstawie podanych wierzchołków - koniec }
- abc := sortuj_boki(a,b,c);
- a := abc[2];
- b := abc[1];
- c := abc[0];
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- if (a+b=c) or (a+b>c) then break
- else clrscr;
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- end
- else if wybor = 3 then while zapetlaj2 = true do
- begin
- { Ustalenie położenia wierzchołków - początek }
- writeln('Pierwszy wierzchołek:');
- write('x=');
- readln(x1);
- write('y=');
- readln(y1);
- write('z=');
- readln(z1);
- writeln;
- writeln('Drugi wierzchołek:');
- write('x=');
- readln(x2);
- write('y=');
- readln(y2);
- write('z=');
- readln(z2);
- writeln;
- writeln('Trzeci wierzchołek:');
- write('x=');
- readln(x3);
- writeln('y=');
- readln(y3);
- writeln('z=');
- readln(z3);
- { Ustalenie położenia wierzchołków - koniec }
- { Obliczanie długości boków na podstawie podanych wierzchołków - początek }
- { Żeby obliczyć długości boków użyjemy wzoru na obliczanie przekątnej w prostopadłościanie }
- a := sqrt(abs(sqr(x1-x2))+abs(sqr(y1-y2))+abs(sqr(z1-z2)));
- b := sqrt(abs(sqr(x2-x3))+abs(sqr(y2-y3))+abs(sqr(z2-z3)));
- c := sqrt(abs(sqr(x1-x3))+abs(sqr(y1-y3))+abs(sqr(z1-z3)));
- { Obliczanie długości boków na podstawie podanych wierzchołków - koniec }
- abc := sortuj_boki(a,b,c);
- a := abc[2];
- b := abc[1];
- c := abc[0];
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- if (a+b=c) or (a+b>c) then break
- else clrscr;
- { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
- end;
- { Część wspólna programu - początek }
- { Obliczanie miar kątów - początek }
- kat_alfa := arctan(sqrt(1-sqr((180*pi)/(sqr(a)-sqr(b)-sqr(c))/(2*b*c))))/((180*pi)/(sqr(a)-sqr(b)-sqr(c))/(2*b*c));
- kat_beta := arctan(sqrt(1-sqr((180*pi)/(sqr(a)+sqr(b)-sqr(c))/(2*b*c))))/((180*pi)/(sqr(a)+sqr(b)-sqr(c))/(2*b*c));
- kat_gamma := 180-(kat_alfa+kat_beta);
- { Obliczanie miar kątów - koniec }
- { Obliczanie pola trójkąta - początek }
- pole_trojkata := 1/2*a*b*sin(c);
- { Obliczanie pola trójkąta - koniec }
- { Wypisanie wyników - początek }
- writeln('Kąt alfa =',kat_alfa);
- writeln('Kąt beta =',kat_beta);
- writeln('Kąt gamma =',kat_gamma);
- writeln;
- writeln('Pole trójkąta =',pole_trojkata)
- { Wypisanie wyników - początek }
- { Część wspólna programu - koniec }
- end
- END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement