Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2009, 21:24   #1
Настенька..Блонди
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 37
По умолчанию Разработаем модуль triangle

.....Выручайте бедную студентку.....

Разработаем модуль triangle, содержащий набор функций для выполнения расчета треугольников, используя известные формулы из геометрии. При этом предусмотрим два наиболее часто встречающихся способа задания треугольника: по трем сторонам и по координатам его вершин. Модуль позволяет выполнить следующие действия:
1.Вычисление сторон по координатам вершин треугольника;
2. Проверка существования треугольника;
3.Расчет площади и периметра треугольника;
4.Расчет радиуса вписанной и описанной окружности.
Используя функции из данного модуля, решить следующую задачу. Пусть имеется два участка треугольной формы, обнесенных забором. Каким-то образом известны координаты вершин этих треугольников. Требуется определить:
1.У которого из участков длиннее забор;
2.На каком из участков можно разместить больше растений (считаем, что их количество прямо пропорционально площади).
Настенька..Блонди вне форума Ответить с цитированием
Старый 05.02.2009, 21:25   #2
Настенька..Блонди
Пользователь
 
Регистрация: 25.12.2008
Сообщений: 37
По умолчанию

Эт нуна в ПАСКАЛЕ!!!!!!!!!!!
Настенька..Блонди вне форума Ответить с цитированием
Старый 05.02.2009, 22:26   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот..Разбирайтесь..

Модуль triangle.pas
Код:
unit triangle;
interface
type treug = record
a,b,c : real;
x1,x2,x3,y1,y2,y3 : real;
S,P : real;
end;

procedure createTreug(var T : treug);
function storony(var T : treug) : boolean;
function getPlosh(var T : treug) : real;
function getPerimetr(var T : treug) : real;
function radOpis(var T : treug) : real;
function radVpis(var T : treug) : real;
function treugExist(var T : treug) : boolean;

implementation

procedure createTreug(var T : treug);
 begin
 with T do
  begin
 write('x1= '); readln(x1);
 write('y1= '); readln(y1);
 write('x2= '); readln(x2);
 write('y2= '); readln(y2);
 write('x3= '); readln(x3);
 write('y3= '); readln(y3);
 a := 0;
 b := 0;
 c := 0;
  end;
 end;

function storony(var T : treug) : boolean;
 begin
 if (T.x1 = T.x2) and (T.x2 = T.x3) and (T.x1 = 0) then
   begin
   storony := false;
   exit;
   end;
 with T do
  begin
  a := sqrt(sqr(x2-x1)+sqr(y2-y1));
  b := sqrt(sqr(x3-x2)+sqr(y3-y2));
  c := sqrt(sqr(x3-x1)+sqr(y3-y1));
  storony := true;
  end;
 storony := false;
 end;

function getPlosh(var T : treug) : real;
 var cp : real;
 begin
 if (T.a = T.b) and (T.a = 0) then storony(T);
 with T do
  begin
  cp := (a+b+c)/2;
  S := sqrt(cp*(cp-a)*(cp-b)*(cp-c));
  end;
 getPlosh := T.S;
 end;

function getPerimetr(var T : treug) : real;
 begin
 if (T.a = T.b) and (T.a = 0) then storony(T);
 with T do
  begin
  P := a+b+c;
  getPerimetr := P;
  end;
 end;

function radOpis(var T : treug) : real;
 var R,rS : real;
 begin
 rS := getPlosh(T);
 R := T.a*T.b*T.c/(4*rS);
 radOpis := R;
 end;

function radVpis(var T : treug) : real;
 var r,rS,rP : real;
 begin
 rS := getPlosh(T);
 rP := getPerimetr(T);
 r := 2*rS/rP;
 radVpis := r;
 end;

function treugExist(var T : treug) : boolean;
 begin
 if (T.a = T.b) and (T.a = 0) then storony(T);
 if (T.a=0) or (T.b=0) or (T.c=0) then treugExist := false
 else treugExist := true;

 end;

end.

Программа:
Код:
uses crt,triangle;
var
Tr1,Tr2 : treug;

begin
clrscr;
writeln('Treugolnik 1:');
createTreug(Tr1);
writeln('----');
writeln('Treugolnik 2:');
createTreug(Tr2);
writeln('------------');

if not treugExist(Tr1) then
  begin
  writeln('Treugolnik 1 ne sushestvuet!');
  readln;
  exit;
  end;
if not treugExist(Tr2) then
  begin
  writeln('Treugolnik 2 ne sushestvuet!');
  readln;
  exit;
  end;

getPerimetr(Tr1);
getPerimetr(Tr2);
if Tr1.P>Tr2.P then writeln('Zabor 1-ogo uchastka dlinnee')
else if Tr1.P<Tr2.P then writeln('Zabor 2-ogo uchastka dlinnee')
else writeln('Dliny zaborob odinakovy');
writeln('------');
getPlosh(Tr1);
getPlosh(Tr2);
if Tr1.S>Tr2.S then writeln('Na 1-m uchastke bolshe rastenij')
else if Tr1.S<Tr2.S then writeln('Na vtorom uchastke bolshe rastenij')
else writeln('Kolichestvo rastenij na uchastkah odinakovo');

readln;
end.
Пример ввода:
Код:
Treugolnik 1:
x1= 0
y1= 0
x2= 3
y2= 0
x3= 0
y3= 4
----
Treugolnik 2:
x1= 0
y1= 0
x2= 4
y2= 0
x3= 0
y3= 5
------------
Zabor 2-ogo uchastka dlinnee
------
Na vtorom uchastke bolshe rastenij
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 05.02.2009 в 23:03. Причина: дополнил
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
модуль Graph odi_noki Паскаль, Turbo Pascal, PascalABC.NET 2 25.09.2008 12:20
Модуль Graph ShnapS Паскаль, Turbo Pascal, PascalABC.NET 6 28.05.2008 00:44
модуль crt BBagi Паскаль, Turbo Pascal, PascalABC.NET 1 27.12.2007 14:10
Модуль Graph LEX.darnica Помощь студентам 13 27.11.2007 19:15