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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2008, 14:54   #1
meds
 
Регистрация: 28.05.2008
Сообщений: 4
По умолчанию Задача про 3 прямые

У подружке с преподом сложились плохие отношения. и он ей в курсовой задал сложные задачи. общими усилиями я с ее одногруппниками решили почти все. кроме одной. а эту никто не знает как решать.

Три прямые на плоскости заданы уравнениями:
АкХ+ВкУ=Ск(К=1,2,3)
Если эти прямые попарно пересекаются и образуют треугольник, тогда найти его площадь.

если нужно заплатить, то скажите сколько, я заплачу.
meds вне форума Ответить с цитированием
Старый 15.11.2008, 20:22   #2
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Записываете 3 СЛАУ по 2 уравнения в каждой. Решаете, находите точки пересечения, если они есть. Если они различны, то вычисляете стороны и дальше по формуле Герона. Как решать СЛАУ на форуме полно примеров
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 16.11.2008, 02:22   #3
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

вроде все учел...... перепроверь на всякий случай.....
Код:
type Point=record
     x,y:real;
end;

type line=record
     a,b,c:real;
end;

function delta(z1,z2:real):real;
begin
 if z1=0 then delta:=0
 else delta:=z2/z1;
end;


function per(l1,l2:line;var Plot:Point):boolean;
var p:Point;
    da,db,dc,b,c:real;
    ch:boolean;
begin
 ch:=true;
 da:=delta(l1.a,l2.a);
 db:=delta(l1.b,l2.b);
 dc:=delta(l1.c,l2.c);
 if (da=db) and (db=dc) then ch:=false
 else
  begin
   b:=l2.a*l1.b-l1.a*l2.b;
   c:=l2.a*l1.c-l1.a*l2.c;
   p.y:=c/b;
   p.x:=(l1.c-l1.b*p.y)/l1.a;
  end;
 Plot:=p;
 per:=ch;
end;

function dlina(p1,p2:Point):real;
begin
 dlina:=sqrt(sqr(p1.x-p2.x)+sqr(p1.y-p2.y));
end;

function geron(p1,p2,p3:Point):real;
var pp,a,b,c:real;
begin
 a:=dlina(p1,p2);
 b:=dlina(p2,p3);
 c:=dlina(p1,p3);
 pp:=(a+b+c)/2;
 geron:=sqrt(pp*(pp-a)*(pp-b)*(pp-c));
end;

function equal(p1,p2:Point):boolean;
begin
 if (p1.x=p2.x) and (p1.y=p2.y) then equal:=true
 else equal:=false;
end;

var l:array[1..3] of Line;
    p:array[1..3] of Point;
    i:integer;
begin
 for i:=1 to 3 do
  begin
   writeln('vvedite ',i,' line:');
   read(l[i].a,l[i].b,l[i].c);
  end;
 if(per(l[1],l[2],p[1]) and per(l[2],l[3],p[2]) and per(l[1],l[3],p[3]))
 then
  begin if not(equal(p[1],p[2]) or equal(p[1],p[3]) or equal(p[1],p[3]))
   then writeln('S=',geron(p[1],p[2],p[3]))
   else writeln('Not possible');
  end
 else writeln('Not possible');
 readln(i);
end.
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 16.11.2008, 18:18   #4
meds
 
Регистрация: 28.05.2008
Сообщений: 4
По умолчанию

спасибо огромное!!! как мне с Вами расплатиться?
meds вне форума Ответить с цитированием
Старый 17.11.2008, 03:19   #5
Min
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 239
По умолчанию

да ладно..... не надо)))
Надо бы избавиться от привычки ставить многоточие.....
Min вне форума Ответить с цитированием
Старый 17.11.2008, 12:24   #6
loktevv
Новичок
Джуниор
 
Регистрация: 17.11.2008
Сообщений: 1
По умолчанию

Спасиьо вам огромное тоже, очень помогло.
loktevv вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача про массив xakkkkker Помощь студентам 2 02.11.2008 10:49
Задача про близнецов stscolt Помощь студентам 2 21.04.2008 22:52
интересная задача про DataTimePicker ГОСЕАН БД в Delphi 8 15.07.2007 16:37
Задача про переключатели Night Помощь студентам 5 21.01.2007 18:15