Программа


CONST n=5;  { Количество элементов }
TYPE VectorType=array [1..n] of integer; { Вектор-тип }
VAR X:VectorType; { Вектор }
    k:integer;         { Номер минимального элемента }
    S:real;            { Результат }

FUNCTION GetNumberMinElement (B:VectorType):integer;
                  { Функция поиска номера минимального элемента вектора }
  Var i:integer; { Счетчик }
      Min:integer;  { Номер минимального элемента }
  Begin
    Min:=1;  { Начальное определение номера минимального элемента }
    for i:=1 to n do { Цикл просмотра элементов вектора }
      if B[i]<B[Min] then Min:=i; { Если текущий элемент
               меньше минимального, то - переопределение номера минимального }
    GetNumberMinElement:=Min  { Определение значения функции }
  End;

PROCEDURE InputVector (var B:VectorType); { Процедура ввода вектора }
  Var i:integer; { Счетчик }
  Begin
    for i:=1 to n do { Цикл ввода элементов вектора }
      begin
        Write('Введите элемент [',i,'] ');
                                 { Вывод приглашения ввести элемент вектора }
        ReadLn(B[i]);   { Ввод элемента вектора }
      end
  End;

PROCEDURE OutputVector (B:VectorType); { Процедура вывода вектора }
  Var i:integer;   { Счетчик }
  Begin
    for i:=1 to n do { Цикл вывода вектора }
      Write (B[i],'  ');  { Вывод элемента вектора }
    WriteLn  { Пропуск строки }
  End;

FUNCTION HalfFact(N:integer):real;  { Функция вычисления полуфакториала }
  Var Buf:real;  { Буферная переменная для набора полуфакториала }
      i:integer; { Счетчик }
  Begin
    Buf:=1;  { Начальное определение набираемого произведения }
    for i:=N downto 1 do  { Цикл набора произведения }
      if Odd(N)=Odd(i) { Если четность аргумента совпадает с четностью счетчика }
        then Buf:=Buf*i; { то - набор произведения }
    HalfFact:=Buf  { Определение значения функции }
  End;

BEGIN
  WriteLn; { Пропуск строки }
  InputVector(X); { Ввод вектора }
  WriteLn; { Пропуск строки }
  WriteLn(' Вектор: ');  { Вывод заголовка }
  OutputVector(X); { Вывод вектора }
  WriteLn; { Пропуск строки }
  k:=GetNumberMinElement(X); { Определение номера минимального элемента }
  S:=(X[k]-X[n])/(HalfFact(n-k)*HalfFact(n)); { Вычисление результата }
  WriteLn('S=',S)  { Вывод результата }
END.


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию