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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 08:32   #1
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
Печаль Задача про треугольники на паскале или делфи

даны 3 числа. Если они являются сторонами треугольника, определите его вид(равносторонний, равнобедренный, разносторонний). Вычислите длины его высот и выведите их в порядке возрастания. Я в принципе написала ее почти, но не знаю как найти высоты в разностороннем и равнобедренном треугольниках
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг

Последний раз редактировалось (Нафаня); 29.11.2011 в 08:35.
(Нафаня) вне форума Ответить с цитированием
Старый 29.11.2011, 08:41   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Формула Герона
Считаем площадь по этой формуле (т.к. стороны нам известны)
Вспоминаем вторую формулу (площадь равна половине основания * высоту)
И из этой формулы получаем, что высота к одной из сторон = 2*площадь делить на длину этой стороны
Таким образом можно найти все три высоты
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 29.11.2011, 08:55   #3
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

спасибо большое
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 29.11.2011, 09:18   #4
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
Вопрос Задача про треугольники

Пргорамма есть, но что-то с бегином вторым хрень какая-то

Код:
program zadacha2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var e,f,h,a,b,c,s,s1,p:real;

begin
      writeln('Vv. 3 chisla');
      readln(a,b,c);
      if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then
      writeln ('a,b,c - stor treug.')
      begin
             begin if (a<>b) and (a<>c) and (b<>c) then
               begin writeln('Treug. raznostor.');
                     p:=(a+b+c)/2;
                     s:=sqrt(p*(p-a)*(p-b)*(p-c));
                     h:=s*2/c;
                     e:=s*2/a;
                     f:=s*2/b;
                     writeln('Vys.e= ',e,' Vys.f= ',f,' Vys.h= ',h);
                     readln;
               end;
             end;
             begin if (a=b) and (a=c) and (b=c) then
               begin writeln('Treug. ravnost.')
                     e=sqrt(b*b-sqr(c/2));
                     writeln('Vys.e= ',e,' Vys.h= ',e' Vys.f= ',e);
                     readln;
               end;
             end;
             begin if ((a=b)and(b<>c)and(a<>c))or((a=c)and(a<>b)and(c<>b))or((b=c)and(b<>a)and(c<>a))then
               begin writeln('Treug. ravnobedr.');
                     h:=sqrt(a*a-sqr(b/2));
                     e:=s*2/a;
                     writeln('Vys.e= ',e,' Vys.f= ',e,' Vys.h= ',h);
                     readln;
               end;
             end;
      end
        else writeln ('a,b,c - ne yavl. stor treugolnika');
             readln;
end.



___________
1) зачем начинать ЕЩЁ одну тему, когда есть же Ваша тема про треугольники,
с этой же задачей?!! Чтобы плодить одни и те же темы?!
так это кросспост получается. А он запрещён правилами форума!

2) Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!


Модератор.
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг

Последний раз редактировалось Serge_Bliznykov; 29.11.2011 в 09:33.
(Нафаня) вне форума Ответить с цитированием
Старый 29.11.2011, 09:28   #5
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

охохох, попробуйте так, вместо:
Код:
if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then
writeln ('a,b,c - stor treug.');
begin
begin if (a<>b) and (a<>c) and (b<>c) then
сделать

Код:
if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then begin
writeln ('a,b,c - stor treug.')
if (a<>b) and (a<>c) and (b<>c) then
и уберите лишние end

P.S.
Код:
begin if (a=b) and (a=c) and (b=c) then
begin if ((a=b)and(b<>c)and(a<>c))or((a=c)an d(a<>b)and(c<>b))or((b=c)and(b<>a)a nd(c<>a))then
здесь begin вообще не нужен
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 29.11.2011, 09:47   #6
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Код:
program zadacha2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var e,f,h,a,b,c,s,p:real;

begin
      writeln('Vv. 3 chisla');
      readln(a,b,c);
      if ((a+b)>c) and ((a+c)>b) and ((b+c)>a) then begin
         writeln ('a,b,c - stor treug.');
         p:=(a+b+c)/2;
         s:=sqrt(p*(p-a)*(p-b)*(p-c));
         if (a=b) and (a=c) and (b=c) then
              writeln('Treug. ravnost.')
         else
         if((a=b)and(b<>c)and(a<>c))or((a=c)and(a<>b)and(c<>b))or((b=c)and(b<>a)and(c<>a)) then
            writeln('Treug. ravnobedr.')
         else writeln('Treug. raznostor.');
         h:=s*2/c;
         e:=s*2/a;
         f:=s*2/b;
         writeln('Vys.e= ',e,' Vys.f= ',f,' Vys.h= ',h);
      end
        else writeln ('a,b,c - ne yavl. stor treugolnika');
        readln;
end.
исправил и немного сократил код
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 29.11.2011, 10:19   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
        else
         if((a=b)and(b<>c)and(a<>c))or((a=c)and(a<>b)and(c<>b))or((b=c)and(b<>a)and(c<>a)) then
всё правильно.
но, имхо, раз мы пришли сюда по веточке ELSE, то все три стороны не могут быть одинаковые, поэтому достаточно проверить совпадение любых двух сторон:
Код:
        else
          if (a=b) or (a=c) or (b=c)  
          then
            writeln('Treug. ravnobedr.')
          else writeln('Treug. raznostor.');
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.11.2011, 14:14   #8
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

спасибо всем большое за помощь
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 12.12.2011, 15:48   #9
(Нафаня)
Пользователь
 
Аватар для (Нафаня)
 
Регистрация: 08.03.2011
Сообщений: 56
По умолчанию

а еще бы высоты в порядке убывания вывести. не могу придумать ничего(
Если бы люди,вдруг,узнали,о чем я думаю... Со мной бы сначала перестали здороваться,а потом,вообще,на костре сожгли бы нафиг
(Нафаня) вне форума Ответить с цитированием
Старый 12.12.2011, 16:52   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а еще бы высоты в порядке убывания вывести. не могу придумать ничего(
я бы написал процедуру вывода высот.
и везде, где writeln('Vys..... ), вместо WriteLn вызывал бы эту процедуру...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рограмма про кубики на С++ или Паскале! я студент Помощь студентам 0 10.01.2011 06:15
задача на паскале про треугольники pashqa Помощь студентам 6 11.12.2010 15:47
задача на паскале про треугольники pashqa Помощь студентам 2 09.12.2010 21:03
Про треугольники Артём555 Паскаль, Turbo Pascal, PascalABC.NET 7 28.04.2010 13:41
задача про массив в Делфи keyssi Помощь студентам 4 13.01.2010 19:36