Задан массив размерности nх3. Элементы длины сторон треугольника.1)проверить существует ли треугольник с заданными длинами сторон.2)вычислить площади треугольников по формуле Герона.3)сортировать полученные площади.У меня получилось пока только нахождение площади, но проблемы с выводом(и массив постоянного размера 3х3) — Pascal(Паскаль)

program treug;
uses crt;
const n=5;{kolichestvo treugolnicov}
var a:array[1..n,1..3]of double;
b:array[1..n]of double;
buf:double;
i,j,k:integer;
function Geron(x,y,z:double):double;
var p:real;
begin
p:=(x+y+z)/2;
Geron:=sqrt(p*(p-x)*(p-y)*(p-z));
end;
function Trg(x,y,z:double):boolean;
begin
if (x>abs(y-z))and(x<(y+z))then
Trg:=true else Trg:=false;
end;
begin
clrscr;
writeln('Vvedite matricu storon treugolnika:');
for i:=1 to n do
begin
for j:=1 to 3 do
begin
read(a[i,j]);
end;
 
end;
writeln;
k:=0;
for i:=1 to n do
begin
if not Trg(a[i,1],a[i,2],a[i,3]) then
begin
writeln('Treugolnik ',i,' ne sushestvuet!');
writeln;
end
else if Trg(a[i,1],a[i,2],a[i,3]) then
begin
k:=k+1;
writeln('Treugolnik ',i,' sushestvuet!');
writeln('Ploshad=',Geron(a[i,1],a[i,2],a[i,3]):6:2);
b[k]:=Geron(a[i,1],a[i,2],a[i,3]);
writeln;
end;
end;
for i:=1 to k-1 do
for j:=1 to k-1 do
if b[j]>b[j+1] then
begin
buf:=b[j];
b[j]:=b[j+1];
b[j+1]:=buf;
end;
writeln;
writeln('Ploshadi v porjadke vozrastanja:');
for i:=1 to k do
write(b[i]:6:2);
readkey;
end.

Вариант 2

program treug;
uses crt;
var a:array[1..50,1..3]of double;
b:array[1..50]of double;
buf:double;
n,i,j,k:integer;
function Geron(x,y,z:double):double;
var p:double;
begin
p:=(x+y+z)/2;
Geron:=sqrt(p*(p-x)*(p-y)*(p-z));
end;
function Trg(x,y,z:double):boolean;
begin
if (x>abs(y-z))and(x<(y+z))then
Trg:=true else Trg:=false;
end;
begin
clrscr;
write('Vvedite kolichestvo treugolnikov [/SIZE][FONT=Courier New][SIZE=2]n=[/SIZE][/FONT][SIZE=2]');
readln(n);
writeln('Vvedite ',n,' troek chisel:');
for i:=1 to n do
for j:=1 to 3 do
read(a[i,j]);
readln;
clrscr;
writeln('Matrica storon treugolnika:');
for i:=1 to n do
     begin
       for j:=1 to 3 do
       write(a[i,j]:6:2);
       writeln;
     end;
writeln;
k:=0;
for i:=1 to n do
     begin
       if not Trg(a[i,1],a[i,2],a[i,3]) then
         begin
            writeln('Treugolnik ',i,' ne sushestvuet!');
            writeln;
         end
      else if Trg(a[i,1],a[i,2],a[i,3]) then
         begin
            k:=k+1;
            writeln('Treugolnik ',i,' sushestvuet!');
            writeln('Ploshad=',Geron(a[i,1],a[i,2],a[i,3]):6:2);
            b[k]:=Geron(a[i,1],a[i,2],a[i,3]);
            writeln;
        end;
end;
for i:=1 to k-1 do
for j:=1 to k-1 do
if b[j]>b[j+1] then
    begin
       buf:=b[j];
       b[j]:=b[j+1];
       b[j+1]:=buf;
    end;
writeln('Ploshadi v porjadke vozrastanja:');
for i:=1 to k do
write(b[i]:6:2);
readkey;
end. 

Вариант 3

program treug;
uses crt;
const n=100;{kolichestvo treugolnicov}
var a:array[1..n,1..3]of double;
b:array[1..n]of double;
buf:double;
i,j,k,r:integer;
function Geron(x,y,z:double):double;
var p:real;
begin
p:=(x+y+z)/2;
Geron:=sqrt(p*(p-x)*(p-y)*(p-z));
end;
function Trg(x,y,z:double):boolean;
begin
if (x>abs(y-z))and(x<(y+z))then
Trg:=true else Trg:=false;
end;
begin
clrscr;
Writeln('Vvedite chislo treugolnikov');
read (r);
writeln('Vvedite matricu storon treugolnika:');
for i:=1 to r do
begin
for j:=1 to 3 do
begin
read(a[i,j]);
end;
 
end;
writeln;
k:=0;
for i:=1 to r do
begin
if not Trg(a[i,1],a[i,2],a[i,3]) then
begin
writeln('Treugolnik ',i,' ne sushestvuet!');
writeln;
end
else if Trg(a[i,1],a[i,2],a[i,3]) then
begin
k:=k+1;
writeln('Treugolnik ',i,' sushestvuet!');
writeln('Ploshad=',Geron(a[i,1],a[i,2],a[i,3]):6:2);
b[k]:=Geron(a[i,1],a[i,2],a[i,3]);
writeln;
end;
end;
for i:=1 to k-1 do
for j:=1 to k-1 do
if b[j]>b[j+1] then
begin
buf:=b[j];
b[j]:=b[j+1];
b[j+1]:=buf;
end;
writeln;
writeln('Ploshadi v porjadke vozrastanja:');
for i:=1 to k do
write(b[i]:6:2);
readkey;
end.

Leave a Comment

40 + = 46