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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 23:16   #1
DidT33rus
Пользователь
 
Регистрация: 27.04.2010
Сообщений: 11
Восклицание Треугольник в паскале спрограммировать

1.1 Пусть даны координаты трех точек на плоскости.Если они могут быть вершинами тупоугольного треугольника. вычислите его площадь.Выведите длины сторон в порядке убывания.
1.2 Пусть даны координаты трех точек на плоскости.Составьте программу для определения вида треугольника(равносторонний, разносторонний,равнобедренный,прямо угольный, тупоугольный,остроугольный),если данные координаты вершин позволяют его построить.
DidT33rus вне форума Ответить с цитированием
Старый 29.04.2010, 23:27   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

http://www.cyberforum.ru/pascal/thread34058.html
Для первой ссылки уже выкладывались мной.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 30.04.2010, 12:12   #3
DidT33rus
Пользователь
 
Регистрация: 27.04.2010
Сообщений: 11
По умолчанию

нет, тама совсем другая задача. если бы хоть малясь разбирался то я бы смог выбрать нужное мне из той задачки которую ты мне предложил, но как видишь я чайник еще )))
DidT33rus вне форума Ответить с цитированием
Старый 30.04.2010, 12:16   #4
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

Для второй задачи (ммм... опишу алгоритм на словах):
  1. Найдём длину каждой стороны. Длина стороны находится по формуле l = sqrt((x1-x0)^2 + (y1-y0)^2);
  2. Проверим, можно ли построить этот треугольник. (Проходим по всем сторонам и убеждаемся, что длина каждой стороны меньше суммы длин других сторон)
  3. Найдём большую сторону. Если квадрат большей стороны больше суммы квадратов остальных сторон - треугольник тупоугольный. Если квадрат большей стороны равен сумме квадратов других сторон - треугольник прямоугольный. Если квадрат большей стороны меньше суммы квадратов других сторон - треугольник остроугольный.
  4. Дальше осталось только проверить, если все стороны треугольника разные - он разносторонний, если есть две одинаковые - он равнобедренный, если все три одинаковые - равносторонний.

Если возникнут какие-то проблемы - напиши, размещу здесь код. Но сначала попробуй написать сам.

Последний раз редактировалось kogemrka; 30.04.2010 в 12:45. Причина: Небольшое исправление формулы
kogemrka вне форума Ответить с цитированием
Старый 30.04.2010, 12:18   #5
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

Цитата:
Сообщение от DidT33rus Посмотреть сообщение
нет, тама совсем другая задача. если бы хоть малясь разбирался то я бы смог выбрать нужное мне из той задачки которую ты мне предложил, но как видишь я чайник еще )))
нет, там та же самая задача. Единственное отличие - в твоей задаче нет требования того, чтобы треугольник был разносторонним. Достаточно убрать из того решения проверку на разносторонность и всё готово.

Впрочем, может быть меня глючит? Покажи мне хотя бы ещё одно отличие)

PS. смотрю, "33rus" есть в нике. Выходит, мы земляки? ;-)

Последний раз редактировалось kogemrka; 30.04.2010 в 12:21. Причина: Добавлен постскриптум
kogemrka вне форума Ответить с цитированием
Старый 30.04.2010, 12:27   #6
DidT33rus
Пользователь
 
Регистрация: 27.04.2010
Сообщений: 11
По умолчанию

Выходит да, если ты тоже со Владимира)))
DidT33rus вне форума Ответить с цитированием
Старый 30.04.2010, 12:29   #7
DidT33rus
Пользователь
 
Регистрация: 27.04.2010
Сообщений: 11
Смущение

ой а напиши плиз код
DidT33rus вне форума Ответить с цитированием
Старый 30.04.2010, 13:10   #8
kogemrka
Форумчанин
 
Аватар для kogemrka
 
Регистрация: 08.01.2010
Сообщений: 165
По умолчанию

Эх, давно я не брал в руки шашку^W паскаль)

Не проверял особо на ошибки, но вроде работает. Как-то так:
Код:
program tri;
var
  pointx : array[0..2] of real;
  pointy : array[0..2] of real;
  len : array[0..2] of real;
  max : integer;
  i : integer;
begin
     {Vvod dannih}
     for i := 0 to 2 do
          readln(pointx[i], pointy[i]);

     {Schitaem dlini}
     for i := 0 to 2 do
         len[i] := sqrt(sqr(pointx[(i+1) mod 3]-pointx[i]) + sqr(pointy[(i+1) mod 3] - pointy[i]));

     {Proverjaem, mozhno li postroit` takoj treugol`nik}
     for i := 0 to 2 do
         if len[i] >= len[(i+1) mod 3] + len[(i+2) mod 3] then
         begin
             writeln('Achtung! Eto ne treugol`nik!');
             readln;
             Exit;
         end;

     {Nahodim samuyu dlinnuyu storonu}
     max := 0;
     if len[max] < len[1] then max := 1;
     if len[max] < len[2] then max := 2;

     {Proverjaem na ostrougol`nost`}
     if sqr(len[max]) < sqr(len[(max + 1) mod 3]) + sqr(len[(max + 2) mod 3]) then
         writeln('Treugol`nik ostrougol`nij')
     else if sqr(len[max]) = sqr(len[(max + 1) mod 3]) + sqr(len[(max + 2) mod 3]) then
         writeln('Treugol`nik prjamougol`nij')
     else
         writeln('Treugol`nik tupougol`nij');

     {Proverjaem na kolichestvo ravnih storon}
     if (len[0] = len[1]) and (len[1] = len[2]) then
        writeln('Treugol`nik ravnostoronnij')
     else if (len[0] <> len[1]) and (len[1] <> len[2]) and (len[2] <> len[0]) then
        writeln('Trugol`nik raznostoronnij')
     else
        writeln('Treugol`nik ravnobedrennij');

     readln;
end.

Последний раз редактировалось kogemrka; 30.04.2010 в 13:14. Причина: Убрал лишние пустые строки в коде
kogemrka вне форума Ответить с цитированием
Старый 30.04.2010, 13:25   #9
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

ну а первое аналогично.ищем по двум координатам каждую сторону и сравниваем их(если я неошибаюсь).написать немогу так как с тела сижу в данный момент.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 30.04.2010, 17:30   #10
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
Program treug;
uses crt;
var a,b,c,mx,mn,sr,y1,y2,y3,x1,x2,x3,p,Plosh:real;
begin
     clrscr;
     write('Введите координаты сторон через пробел: ');
     readln(x1,y1);
     readln(x2,y2);
     readln(x3,y3);
     a:=sqrt(sqr(x2-x1)+sqr(y2-y1));
     b:=sqrt(sqr(x3-x2)+sqr(y3-y2));
     c:=sqrt(sqr(x1-x3)+sqr(y1-y3));
if (a+b<=c)or(a+c<=b)or(b+c<=a)then
 begin
  writeln('Это не треугольник!');
  readln;
  exit;
 end;
    begin
     mx:=a;
    if b>mx then mx:=b;
    if c>mx then mx:=c;
     mn:=a;
     if b<mn then mn:=b;
     if c<mn then mn:=c;
      sr:=a+b+c-mx-mn;
    end;
 p:=(a+b+c)/2;
Plosh:=sqrt(p*(p-a)*(p-b)*(p-c));
if(a<>b)and(a<>c)and(b<>c) and (mn*mn+sr*sr<mx*mx)then
 begin
  writeln('Это разносторонний тупоугольный треугольник!');
  writeln('Его стороны в порядке возрастания ',mx,' ',sr,' ',mn);
  writeln('Его площадь=',Plosh:0:2);
 end
else write('Это не разносторонний тупоугольный треугольник!');
readkey;
end.
Т.е. вот так.
にんじゃ

Последний раз редактировалось ROMA2PVT; 30.04.2010 в 17:35.
ROMA2PVT вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильный треугольник St1nk3r Помощь студентам 12 05.11.2011 10:36
Треугольник в VBA FullmetalAlchemist Microsoft Office Excel 3 27.04.2010 13:44
Рисуем треугольник Познающий Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 19.11.2009 22:24
Треугольник serega11 Помощь студентам 2 22.05.2008 09:01