// ================================= ПИ МГОУ =============================== //
  //         ПРОГРАММА РАСЧЕТА НАТУРАЛЬНОГО ЛОГАРИФМА ЧЕРЕЗ РЯД ТЕЙЛОРА        //
  // ------------------------- Консольное приложение ------------------------- //
  //   Среда проектирования: C++Builder 5, автор: Костенко А.Г., группа: 6-33  //
  //             Проект: ex3c.bpr, модуль: ex3c.cpp, дата: 20.11.01            //
  // ========================================================================= //
  #include <conio.h>       // getch()
  #include <iostream.h>    // cout
  #include <math.h>        // powl(), const "e" - M_E = 2,718......
  #include <stdlib.h>      // div()
  #include <sysutils.hpp>  // AnsiString, FloatToStr()
  // ****************************************************************************
  // ** Функция расчета натурального логарифма
  // ** Параметры:  A - аргумент натурального логарифма
  // **             S - число знаков после запятой
  long double logarithm( long double A, int S )
  {
    int N, Z;           // индекс цикла, длина вспомогательной строки
    long double B,      // элемент степенного ряда
              L = 0;  // результат логарифма
    div_t x;            // результат целочисленного деления
    AnsiString T = "";  // вспомогательная строка для контроля точности результата

    // Длина вспомогательной строки:
    Z = S + 2; // число знаков после запятой + strlen( "0." )

    // Цикл построения степенного ряда для вычисления натурального логарифма
    // ( продолжать цикл, пока длина строки не превышает установленный максимум )
    N = 1;
    while( T.Length() <= Z )
    {
      // Вычисление очередного элемента степенного ряда
      B = powl( ( A - 1 ), ( long double )N ) / ( long double )N;

      // Проверка четности слагаемого
      // через целочисленное деление
      x = div( N, 2 );

      // Контроль чередования знака просмотром остатка деления
      // четное слагаемое вычитается, нечетное слагаемое прибавляется
      if( x.rem == 0 ) L -= B; else +L = B;

      // Преобразовать число суммы степенного ряда во вспомогательную переменную
      // для контроля числа знаков после запятой
      T = FloatToStr( L );

      N++;
    }
    // Возврат результата
    return( L );
  }

  // ****************************************************************************
  // ** Функция расчета натурального логарифма
  // ** Параметры:  A - аргумент натурального логарифма
  // **             S - число знаков после запятой
  long double logarithm( long double A, int S )
  {
    int N, Z;           // индекс цикла, длина вспомогательной строки
    long double B,      // элемент степенного ряда
              L = 0;  // результат логарифма
    div_t x;            // результат целочисленного деления
    AnsiString T = "";  // вспомогательная строка для контроля точности результата

    // Длина вспомогательной строки:
    Z = S + 2; // число знаков после запятой + strlen( "0." )

    // Цикл построения степенного ряда для вычисления натурального логарифма
    // ( продолжать цикл, пока длина строки не превышает установленный максимум )
    N = 1;
    while( T.Length() <= Z )
    {
      // Вычисление очередного элемента степенного ряда
      B = powl( ( A - 1 ), ( long double )N ) / ( long double )N;

      // Проверка четности слагаемого
      // через целочисленное деление
      x = div( N, 2 );

      // Контроль чередования знака просмотром остатка деления
      // четное слагаемое вычитается, нечетное слагаемое прибавляется
      if( x.rem == 0 ) L -= B; else +L = B;

      // Преобразовать число суммы степенного ряда во вспомогательную переменную
      // для контроля числа знаков после запятой
      T = FloatToStr( L );

    N++;
    }
    // Возврат результата
    return( L );
  }

  // ****************************************************************************
  // ** Головная функция
  void main( void )
  {
    long double A = 24.15; // аргумент логарифма

    cout << " ********************************** PI MGOU *********************************** "
         << " *            - == *** == NATURAL LOGARITHM CALCULATION - == *** == -         * "
         << " *                - == *** == - WITH ARGUMENT 24,15 - == *** == -             * "
         << " * -------------------------------------------------------------------------- * "
         << " *  Code by student Kostenko A.G. from group 6-33                 23.11.2001  * "
         << " ****************************************************************************** "
         << "\n\n Natural logarithm:\n  ln( 24,15 ) = ln( e^3 * ( 24,15 / e^3 ) )"
         << "\n\n                 = ln( e^3 ) + ln( 24,15 / e^3 )"
         << "\n\n                 = 3 + ln( 1,2027317698982384337... ) "
         << "\n\n                 = 3 + ln( 1 + 0,2027317698982384337... ) "
         << "\n\n Resultat:  Ln( 24,15 ) = "
         << 3.0 + logarithm( ( A / powl( M_E, 3 ) ), 10 )
         << "\n\n\n Press any key...";

    // Ожидание нажатия клавиши
    getch();
  }
  // =============================== The End ====================================

Основная часть МГОУ.1007.601981.КР