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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.10.2012, 09:38   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

скажите, а зачем Вам в данном случае ДИНАМИЧЕСКИЙ массив?!
тем более, что его размерность задана в коде константой!
Да и используете Вы в коде только a[1] a[2] a[3].
чем статический на 3 элемента Вас не устроил?!


ДОБАВЛЕНО

а вот примерчик с нужными Вам функциями..
Код:
{
Условие: 11.Даны три числа. Если они могут быть длинами сторон
треугольника, определить его вид (прямоугольный, тупоугольный, остроугольный).
Вычислить длины его высот и напечатать их в порядке убывания.}

program Zadacha11;
{$APPTYPE CONSOLE}
uses
  SysUtils;

const
  arraysize: integer = 3;
type
  TTreugArray = array[1..3] of Extended;



{функция проверки могут ли три числа быть сторонами треугольника
   - true - если переданные стороны могут быть сторонами треуголька,
   - false - если не могут}
function Proverka(aa : TTreugArray ) : boolean;
var i : integer;
begin
  Result := false;
  for i := Low(aa) to High(aa) do
     if aa[i] <= 0 then Exit;

  if (aa[1]+aa[2]>aa[3]) and
        (aa[2]+aa[3]>aa[1]) and (aa[1]+aa[3]>aa[2]) then
    Result := true;
end;

{функция вернёт вид треугольника в виде строчки}
function Treugolnik(aa : TTreugArray ) : string;
var cosA, cosB, cosC : Extended;
begin
  Result := '';
  cosA := (aa[2]*aa[2]+aa[3]*aa[3]-aa[1]*aa[1])/ ( 2*aa[2]*aa[3] );   //вычисление косинусов углов треугольника
  cosB := (aa[1]*aa[1]+aa[3]*aa[3]-aa[2]*aa[2])/ ( 2*aa[1]*aa[3] );
  cosC := (aa[2]*aa[2]+aa[1]*aa[1]-aa[3]*aa[3])/ ( 2*aa[1]*aa[2] );

  if (cosA=0) or (cosB=0) or (cosC=0)                    //прямоугольный треугольник
  then Result := 'Pryamougolniy treugolnik';

  if (cosA<0) or (cosB<0) or (cosC<0)                    //тупоугольный треугольник
  then Result := 'Tupougolniy treugolnik';

  if (cosA>0) and (cosB>0) and (cosC>0)                  //остроугольный треугольник
  then Result := 'Ostrougolniy treugolnik';
end;


{функция возвращает три числа - высоты треугольника
      в отсортированном  (убывающем) порядке}
function VysotyTreuglnikaSorted(aa : TTreugArray ) : TTreugArray;
var
   s, p, Ha, Hb, Hc, min, max, middle: Extended;

begin
  p := (aa[1]+aa[2]+aa[3])/2;                               //периметр
  s := sqrt(p*(p-aa[1])*(p-aa[2])*(p-aa[3]));               //площадь

  Ha := 2*s/aa[1];                                        //высоты
  Hb := 2*s/aa[2];
  Hc := 2*s/aa[3];

  if Ha>=Hb                                              //вычисление max-,min- и middle- высот
  then max := Ha
  else max := Hb;

  if Hc>max
  then max := Hc;

  if Ha>=Hb
  then min := Hb
  else min := Ha;

  if Hc<max
  then min := Hc;

  middle := aa[1]+aa[2]+aa[3]-max-min;

  // вернём полученные результаты в качестве массива
  Result[1] := max;
  Result[2] := middle;
  Result[3] := min;

end;


var
  a : TTreugArray;
  Vysoty : TTreugArray;
  str: string;
  i: Integer;
  OK: boolean;
begin
  for i:=1 to arraysize do
    repeat
      write('Vvedite chislo a',i,': ');
      readln(Str);
      OK := TryStrToFloat(Str,a[i])
    until OK;

  if  Proverka(a)    //условие существования треугольника
  then
    begin
      WriteLn( 'Vid treugolnika: ', Treugolnik( a ) );

      Vysoty := VysotyTreuglnikaSorted( a );
      Writeln('Vysoty : ', Vysoty[1]:5:2, ', ', Vysoty[2]:5:2, ', ', Vysoty[3]:5:2);   //вывод высот в порядке убывания
    end
  else Writeln('Ne treugolnik!');
  readln;
end.

Последний раз редактировалось Serge_Bliznykov; 10.10.2012 в 10:15.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.10.2012, 19:34   #12
neytron007
Пользователь
 
Регистрация: 05.10.2012
Сообщений: 15
По умолчанию

зачем зачем...препод сказал динамический надо - я сделал...ладно, спасибо, но я уже сделал, попроще
neytron007 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать апплет, осуществляющий построение графика функции Djek-vrn Общие вопросы по Java, Java SE, Kotlin 1 03.06.2012 02:14
Создать алгоритм и программу нахождения значения функции oly557964 Паскаль, Turbo Pascal, PascalABC.NET 0 03.02.2012 19:13
надо создать прогу для вычуслении функции в Qt (С++) DANATER Помощь студентам 9 22.02.2011 17:16
Создать массив в функции, через указатель. Как? TwiX Общие вопросы Delphi 10 01.04.2010 11:36
Можно ли создать прототип функции класса7 TwiX Общие вопросы C/C++ 2 07.11.2009 00:59