Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 6.35 KB | None | 0 0
  1. {
  2.         PRS_2010_1.pas
  3.        
  4.         Copyright 2010 Maciej Czekaj <natanielcz@gmail.com>
  5. }
  6.  
  7.  
  8. program PRS_2010_1;
  9.  
  10. uses crt;
  11.  
  12. type
  13. tablica = array[0..2] of real;
  14.  
  15. const
  16. zapetlaj : boolean = true;
  17. zapetlaj2: boolean = true;
  18.  
  19. var
  20. wybor : integer;
  21. a,b,c,x1,x2,x3,y1,y2,y3,z1,z2,z3,kat_alfa,kat_beta,kat_gamma, pole_trojkata : real;
  22. abc:tablica;
  23.  
  24. function sortuj_boki(a,b,c:real):tablica;
  25. begin
  26.  if (a > b) and (a > c) and (b > c) then
  27.   begin
  28.      sortuj_boki[0] := a;
  29.      sortuj_boki[1] := b;
  30.      sortuj_boki[2] := c
  31.     end
  32.     else if (a > b) and (a > c) and (b < c) then
  33.      begin
  34.         sortuj_boki[0] := a;
  35.         sortuj_boki[1] := c;
  36.         sortuj_boki[2] := b;
  37.     end
  38.     else if (a > b) and (a < c) then
  39.      begin
  40.         sortuj_boki[0] := c;
  41.         sortuj_boki[1] := a;
  42.         sortuj_boki[2] := b
  43.      end else if (a < b) and (a > c) then
  44.       begin
  45.          sortuj_boki[0] := b;
  46.          sortuj_boki[1] := a;
  47.          sortuj_boki[2] := c
  48.       end
  49.       else if (a < b) and (a < c) and (b < c) then
  50.        begin
  51.         sortuj_boki[0] := c;
  52.           sortuj_boki[1] := b;
  53.           sortuj_boki[2] := a
  54.        end
  55.        else if (a < b) and (a < c) and (b > c) then
  56.         begin
  57.            sortuj_boki[0] := b;
  58.            sortuj_boki[1] := c;
  59.            sortuj_boki[2] := a
  60.         end
  61.         else if (a = b) and (a > c) then
  62.          begin
  63.             sortuj_boki[0] := a;
  64.             sortuj_boki[1] := b;
  65.             sortuj_boki[2] := c
  66.          end
  67.          else if (a = b) and (a < c) then
  68.           begin
  69.              sortuj_boki[0] := c;
  70.              sortuj_boki[1] := a;
  71.              sortuj_boki[2] := b
  72.           end
  73.           else if (b = c) and (a > b) then
  74.            begin
  75.               sortuj_boki[0] := a;
  76.               sortuj_boki[1] := b;
  77.               sortuj_boki[2] := c
  78.            end
  79.            else if (b = c) and (a < b) then
  80.             begin
  81.                sortuj_boki[0] := b;
  82.                sortuj_boki[1] := c;
  83.                sortuj_boki[2] := a
  84.             end
  85.             else if (a = c) and (a > b) then
  86.              begin
  87.                 sortuj_boki[0] := a;
  88.                 sortuj_boki[1] := c;
  89.                 sortuj_boki[2] := b
  90.              end
  91.              else
  92.               begin
  93.                  sortuj_boki[0] := b;
  94.                  sortuj_boki[1] := a;
  95.                  sortuj_boki[2] := c
  96.     end
  97. end;
  98.  
  99. BEGIN
  100.     while zapetlaj = true do
  101.      begin
  102.         writeln('1 - podaj dlugosci bokow');
  103.         writeln('2 - podaj wspolrzedne wierzcholkow w 2D');
  104.         writeln('3 - podaj wspolrzedne wierzcholkow w 3D');
  105.         read(wybor);
  106.         clrscr;
  107.        
  108.         if wybor = 1 then while zapetlaj2 = true do
  109.          begin
  110.             { Ustalenie długości boków - początek }
  111.             write('a=');
  112.             readln(a);
  113.             write('b=');
  114.             readln(b);
  115.             write('c=');
  116.             readln(c);
  117.             abc := sortuj_boki(a,b,c);
  118.             a := abc[2];
  119.             b := abc[1];
  120.             c := abc[0];
  121.             { Ustalenie długości boków - koniec }
  122.            
  123.             { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  124.             if (a+b=c) or (a+b>c) then break
  125.              else clrscr;
  126.             { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  127.          end
  128.          else if wybor = 2 then
  129.           while zapetlaj2 = true do
  130.            begin
  131.               { Ustalenie położenia wierzchołków - początek }
  132.               writeln('Pierwszy wierzchołek:');
  133.               write('x=');
  134.               readln(x1);
  135.               write('y=');
  136.               readln(y1);
  137.               writeln('Drugi wierzchołek:');
  138.               write('x=');
  139.               readln(x2);
  140.               write('y=');
  141.               readln(y2);
  142.               writeln('Trzeci wierzchołek:');
  143.               write('x=');
  144.               readln(x3);
  145.               write('y=');
  146.               readln(y3);
  147.               { Ustalenie położenia wierzchołków - początek }
  148.            
  149.               { Obliczanie długości boków na podstawie podanych wierzchołków - początek }
  150.               { sqrt(liczba) - pierwiastek z liczby
  151.               * fabs(liczba) - wartość bezwzględna z liczby
  152.               * sqr(liczba) - kwadrat liczby }
  153.               a := sqrt(abs(sqr(x2-x1)) + abs(sqr(y2-y1)));
  154.               b := sqrt(abs(sqr(x3-x2)) + abs(sqr(y3-y2)));
  155.               c := sqrt(abs(sqr(x1-x3)) + abs(sqr(y1-y3)));
  156.               { Obliczanie długości boków na podstawie podanych wierzchołków - koniec }
  157.              
  158.                 abc := sortuj_boki(a,b,c);
  159.                 a := abc[2];
  160.                 b := abc[1];
  161.                 c := abc[0];
  162.              
  163.               { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  164.               if (a+b=c) or (a+b>c) then break
  165.                else clrscr;
  166.               { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  167.              end
  168.            else if wybor = 3 then while zapetlaj2 = true do
  169.             begin
  170.             { Ustalenie położenia wierzchołków - początek }
  171.             writeln('Pierwszy wierzchołek:');
  172.             write('x=');
  173.             readln(x1);
  174.             write('y=');
  175.             readln(y1);
  176.             write('z=');
  177.             readln(z1);
  178.             writeln;
  179.             writeln('Drugi wierzchołek:');
  180.             write('x=');
  181.             readln(x2);
  182.             write('y=');
  183.             readln(y2);
  184.             write('z=');
  185.             readln(z2);
  186.             writeln;
  187.             writeln('Trzeci wierzchołek:');
  188.             write('x=');
  189.             readln(x3);
  190.             writeln('y=');
  191.             readln(y3);
  192.             writeln('z=');
  193.             readln(z3);
  194.             { Ustalenie położenia wierzchołków - koniec }
  195.            
  196.             { Obliczanie  długości boków na podstawie podanych wierzchołków - początek }
  197.             { Żeby obliczyć długości boków użyjemy wzoru na obliczanie przekątnej w prostopadłościanie }
  198.             a := sqrt(abs(sqr(x1-x2))+abs(sqr(y1-y2))+abs(sqr(z1-z2)));
  199.             b := sqrt(abs(sqr(x2-x3))+abs(sqr(y2-y3))+abs(sqr(z2-z3)));
  200.             c := sqrt(abs(sqr(x1-x3))+abs(sqr(y1-y3))+abs(sqr(z1-z3)));
  201.             { Obliczanie  długości boków na podstawie podanych wierzchołków - koniec }
  202.            
  203.             abc := sortuj_boki(a,b,c);
  204.             a := abc[2];
  205.             b := abc[1];
  206.             c := abc[0];
  207.              
  208.               { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  209.               if (a+b=c) or (a+b>c) then break
  210.                else clrscr;
  211.               { Sprawdzanie czy podane boki mogą być długościami boków w trójkącie początek }
  212.            end;
  213.          
  214.         { Część wspólna programu - początek }  
  215.         { Obliczanie miar kątów - początek }
  216.         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));
  217.         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));
  218.         kat_gamma := 180-(kat_alfa+kat_beta);
  219.         { Obliczanie miar kątów - koniec }
  220.        
  221.         { Obliczanie pola trójkąta - początek }
  222.         pole_trojkata := 1/2*a*b*sin(c);
  223.         { Obliczanie pola trójkąta - koniec }
  224.        
  225.         { Wypisanie wyników - początek }
  226.         writeln('Kąt alfa =',kat_alfa);
  227.         writeln('Kąt beta =',kat_beta);
  228.         writeln('Kąt gamma =',kat_gamma);
  229.         writeln;
  230.         writeln('Pole trójkąta =',pole_trojkata)
  231.         { Wypisanie wyników - początek }
  232.         { Część wspólna programu - koniec }
  233.      end
  234. END.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement