Автор Тема: Паскаль  (Прочитано 9797 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Паскаль
« : 28 Сентября 2009, 23:33:34 »
Помогите решить задачу!
Даны 4 числа, три из них стороны треугольника. Надо определить эти числа, и найти площадь и периметр треугольника.

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: Паскаль
« Ответ #1 : 28 Сентября 2009, 23:38:31 »
Стороны треугольника нельзя задавать произвольно, они связаны следующими неравенствами. В треугольнике сумма двух его сторон должна быть больше третьей стороны, в ином случае треугольник называется вырожденным.

    * a < b + c
    * b < c + a
    * c < a + b

В случае невыполнения одного из неравенств, треугольник называется вырожденным, далее везде предполагается невырожденный случай.
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Паскаль
« Ответ #2 : 28 Сентября 2009, 23:42:24 »
Имелось в виду что 4 -е число надо отсеять, и как написать программу?

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: Паскаль
« Ответ #3 : 28 Сентября 2009, 23:48:15 »
берете,запихиваете все 4 числа в массив,ну или в 4 переменных

далее берете первые 3
проверяете их по 3 выше мною написанным неравенствам,если все выполняются - это стороны,иначе берете другие 3 стороны и тд,пока не найдутся 3 стороны удовлетворяющих тем условиям
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Паскаль
« Ответ #4 : 29 Сентября 2009, 00:00:41 »
Это я и сам понимаю как это выглядет на Паскале?

Оффлайн Semen_K

  • Ветеран
  • *****
  • Сообщений: 1860
    • Просмотр профиля
Re: Паскаль
« Ответ #5 : 29 Сентября 2009, 00:29:31 »
Я позволю себе вмешаться) Не как программист, а скорее человек занимающийся геометрией. А у вас не возниккал вопрос, что из четырех отрезков можно создать не один единственный треугольник:? А, допустим, два. Например из а в с     и из b c d. Как быть программе в этом случае? За какой треугольник браться.?
Пожалуйста не пишите голое условие! Сначало мы выслушаем Ваши мысли или хотябы вопросы, но конкретные и лишь потом дадим необходимые советы!
Но можете всего этого и не делать, если Вас не интересует результат
Если не хотите разбираться сами закажите решение на сайте.

Оффлайн Semen_K

  • Ветеран
  • *****
  • Сообщений: 1860
    • Просмотр профиля
Re: Паскаль
« Ответ #6 : 29 Сентября 2009, 00:32:31 »
А если все отрезки равны между собой - тогда сколько треугольников. Ваши условия недостаточны для отсева 4 отрезка. Да и может сложиться ситуация, когда отсеивать будет нечего, а прото будет два варианта треугольников.
Пожалуйста не пишите голое условие! Сначало мы выслушаем Ваши мысли или хотябы вопросы, но конкретные и лишь потом дадим необходимые советы!
Но можете всего этого и не делать, если Вас не интересует результат
Если не хотите разбираться сами закажите решение на сайте.

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Паскаль
« Ответ #7 : 29 Сентября 2009, 01:22:29 »
Данила правильно написал условия...а по поводу выбора 3-х сторон из четырех...всего 4 варианта...даже обход можно не делать, а просто перебрать всё и для подходящих сделать то что нужно...про количество треугольников речи вроде и не было...может быть 0, а может и больше...

Оффлайн lu

  • Модератор
  • *****
  • Сообщений: 3126
  • ~~~~^_^~~~~
    • Просмотр профиля
Re: Паскаль
« Ответ #8 : 29 Сентября 2009, 05:08:09 »
ну я вмешиваюсь не как математик))
там в условии НЕ написано чтоб все отрезки проверял а также чтоб нашел периметры и площади всех треугольников...поэтому по умолчанию можно брать любой треугольник из любых трех отрезков и найти надо именно его параметры...
в общем это будет цикл до пока... незнаю как в паскале этот цикл пишется... до тех пор пока условие не выполнится будет проверять и подбирать числа....
в си будет это выглядеть так:

int a,b,c,d,flag=0;
do
{  //ввод a,b,c,d;
    scanf("%d",&a);  scanf("%d",&b);  scanf("%d",&c);  scanf("%d",&d); //можно также генератором ))
    if(a<b+c&&b<a+c&&c<a+b)  {s=....   p=....  printf("..."); flag=1}
    else if(a<d+c&&d<a+c&&c<a+d)  {s=....   p=....  printf("..."); flag=1}
    else if(a<d+b&&d<a+b&&b<a+d)  {s=....   p=....  printf("...");  flag=1}
    else if(b<d+c&&d<b+c&&c<b+d)  {s=....   p=....  printf("...");  flag=1}
    else flag=0; printf("введите заново числа, т.к. из предыдущих сторон нельзя построить треугольник");
}while(flag==1)

Мы помогаем, а не решаем за Вас !!!

Полезные обозначения:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ∂ ℮ ∩ ≡  ≠ ≤ ≥ ≈ ∩   α β γ δ ε ζ η θ λ μ ξ π ρ σ φ ψ

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Паскаль
« Ответ #9 : 29 Сентября 2009, 09:28:37 »
угу : )

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Паскаль
« Ответ #10 : 29 Сентября 2009, 10:14:05 »
ну я вмешиваюсь не как математик))
там в условии НЕ написано чтоб все отрезки проверял а также чтоб нашел периметры и площади всех треугольников...поэтому по умолчанию можно брать любой треугольник из любых трех отрезков и найти надо именно его параметры...
в общем это будет цикл до пока... незнаю как в паскале этот цикл пишется... до тех пор пока условие не выполнится будет проверять и подбирать числа....
в си будет это выглядеть так:

int a,b,c,d,flag=0;
do
{  //ввод a,b,c,d;
    scanf("%d",&a);  scanf("%d",&b);  scanf("%d",&c);  scanf("%d",&d); //можно также генератором ))
    if(a<b+c&&b<a+c&&c<a+b)  {s=....   p=....  printf("..."); flag=1}
    else if(a<d+c&&d<a+c&&c<a+d)  {s=....   p=....  printf("..."); flag=1}
    else if(a<d+b&&d<a+b&&b<a+d)  {s=....   p=....  printf("...");  flag=1}
    else if(b<d+c&&d<b+c&&c<b+d)  {s=....   p=....  printf("...");  flag=1}
    else flag=0; printf("введите заново числа, т.к. из предыдущих сторон нельзя построить треугольник");
}while(flag==1)


Спасибо, на мысль натолкнул, но хотелось бы на паскале, я и в СИ то не очень

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Паскаль
« Ответ #11 : 29 Сентября 2009, 11:42:56 »
Program treug;
var a,b,c,d,S_tr,P_tr:real;

    Procedure Plosh_Perim(x,y,z:real;var P,S:real);
    var pp:real;
       begin
         P:=x+y+z;
         pp:=P/2;
         S:=sqrt(pp*(pp-x)*(pp-y)*(pp-z));
         writeln ('Storoni ravni', x:5:2,y:5:2,z:5:2);
       end;

  BEGIN
  writeln('Vvedite cisla');
  write('a=');read(a);
  write('b=');read(b);
  write('c=');read(c);
  write('d=');read(d);

    if (a<b+c) and (b<a+c) and (c<a+b) then  Plosh_Perim(a,b,c,P_tr,S_tr)
      else if (a<d+c) and (d<a+c) and (c<a+d) then  Plosh_Perim(a,d,c,P_tr,S_tr)
               else if (a<d+b) and (d<a+b) and (b<a+d) then  Plosh_Perim(a,b,d,P_tr,S_tr)
                       else if (b<d+c) and (d<b+c) and (c<b+d) then  Plosh_Perim(d,b,c,P_tr,S_tr)
                              else writeln ('treug net');

    writeln('perim=',P_tr:5:2);
    writeln('plosh=',S_tr:5:2);
    END.


Вот решение, но оно очень длинное можно ли условия сделать рекурсивной функцией?

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Паскаль
« Ответ #12 : 29 Сентября 2009, 12:00:34 »
В вашем решении ищется только один треугольник...если без else - все...
рекурсию? для четырех элементов проще просто перебрать...а так - ищите алгоритм для обхода сочетаний...в вашем случае из n по 3...

Оффлайн vvk123456

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Паскаль
« Ответ #13 : 29 Сентября 2009, 12:09:39 »
В вашем решении ищется только один треугольник...если без else - все...
рекурсию? для четырех элементов проще просто перебрать...а так - ищите алгоритм для обхода сочетаний...в вашем случае из n по 3...
Для малого количества да, но дело принципа...

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Паскаль
« Ответ #14 : 29 Сентября 2009, 12:29:17 »
Сам я честно говоря не разбирался с алгоритмом, но вот ссылки по теме...
ссылка
ссылка
ссылка

Может поможет...

 

Найти ошибки в программе, составить блок-схему алгоритма, Паскаль

Автор Murmansk

Ответов: 27
Просмотров: 13994
Последний ответ 22 Февраля 2010, 18:52:06
от InfStudent
Задача паскаль. Составить программу для построения таблицы значений

Автор Rydon

Ответов: 1
Просмотров: 8430
Последний ответ 21 Декабря 2009, 15:49:38
от Rydon
Турбо паскаль, программа для нахождения НОД трех чисел, помогите

Автор Иринки

Ответов: 1
Просмотров: 12975
Последний ответ 23 Ноября 2010, 22:29:53
от testtest
Составить блок-схему вычисления суммы ряда. Паскаль

Автор 00884

Ответов: 1
Просмотров: 8725
Последний ответ 24 Декабря 2010, 09:16:21
от @len@_k
Паскаль(задача). Составить программу определения показания часов

Автор Fairmont

Ответов: 0
Просмотров: 6436
Последний ответ 24 Февраля 2011, 21:25:22
от Fairmont