sortx.PAS

{* Задача 12 *}

Unit SORTX;
Interface
Implementation
Begin
 writeln('Дано число x. Hапечатать в порядке возрастания числа: sin x, cos x, ln x. Если при каком-либо x некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.');
End.

Program sortx;

Uses sortx.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключаем внешние файлы *}
Var {* Объявление переменных *}
  x   : integer;
  i   : integer;
  j   : integer;
  a   : real;
  b   : real;
  c   : real;
  buf : real;
  mas : Array [0..2] Of real;
Procedure Calculation;
Begin
  If x > 0 Then
  Begin
    mas[0] := a;
    mas[1] := b;
    mas[2] := c;
    For i := 0 To 2 Do {* Переменная i увеличивается с 0 до 2 *}
      For j := 0 To 1 Do {* Переменная j увеличивается с 0 до 1 *}
        If mas[j] > mas[j + 1] Then
        Begin
          buf := mas[j];
          mas[j] := mas[j + 1];
          mas[j + 1] := buf;
        End;
    For i := 0 To 2 Do {* Увеличиваем i от 0 до 2 с шагом 1 *}
      write(mas[i] : 2 : 2, ' ');
  End;
  Else Begin
    If a > b Then
      write(a : 2 : 2, ' ', b : 2 : 2)
    Else write(b : 2 : 2, ' ', a : 2 : 2);
End;

End;
Begin
ClrScr; {* Очищаем экран *}
Write('Vvedite x = ');
Readln(x);
a := sin(x);
b := cos(x);
If x > 0 Then
Begin
  c := ln(x);
  write('sin', x, ' = ', a : 2 : 2, ' cos', x, ' = ', b : 2 : 2, ' ln', x, ' = ', c : 2 : 2);
  writeln; {* Пропускаем одну строку *}
  writeln; {* Вывод пустой строки *}
End;
Else Begin
  writeln('ln(', x, ') ne suwestvuet');
write('sin', x, ' = ', a : 2 : 2, ' cos', x, ' = ', b : 2 : 2);
writeln; {* Пустая строка *}
writeln; {* Вывод пустой строки *}
End;
Calculation;
Readkey; {* Ждем нажатия любой клавиши *}
End....