Программируем функцию для вычисления коэффициентов разложения

 

float C_k_n ( int n, int k)

{

float C;

 

C= (float) Factorial ( n )/ (Factorial ( k )*Factorial (n-k));

/ /Обратите внимание на приведение результата к типу float.

return C;

}

 

Программируем функцию для вычисления бинома.

Для возведения в степень используем библиотечную функцию pow ().Не забудьте включить файл прототипов функций математической библиотеки среды программирования.

 

#include <math.h>

// вычисляем бином Ньютона

float Binom ( float a, float b, int n)

{

float summa;

 

summa =0.0;

for (int k = 0; k < n +1; k ++)

summa = summa+ pow (a, n-k)* C_k_n(n,k)*pow(b, k);

 

return summa;

}

 

Компилируем программу, для того чтобы убедиться, что ошибок нет.

 

9. Открываем h-файл модуля «Function»

 

 

и помещаем в него прототипы созданных нами функций

 

int Factorial ( int n );

float C_k_n ( int n, int k);

float Binom ( float a, float b, int n);

 

10. Помещаем на форму компоненты «Panel» и «Memo»

и создаем обработчик события «Panel1Click»

 

11. Вставляем из модуля "Function.cpp" строку #include "Function.h в модуль «Main.cpp

 

Создаем программный код в обработчике события

void __fastcall TForm1::Panel1Click(TObject *Sender)

{

float B_N, a, b;

int n;

String S;

 

Memo1->Clear ();

a = StrToFloat (Edit1->Text);

b = StrToFloat (Edit2->Text);

n = StrToInt (Edit3->Text);

 

S.printf ("Проверка = %f", pow (a+b, n));

Memo1->Lines ->Add(S);

 

B_N = Binom ( a, b, n);

S.printf ("Вычислили = %f", B_N);

Memo1->Lines ->Add(S);

 

return;

}

 

Компилируем программу и получаем такой результат

 

Усложним программу, добавив функцию для проверки правильности введенных данных в поля a, b, n.

Для этого из модуля main.сpp в модуль "Function.cpp" строку #include "Function.h"

 

 

 

Создаем такой код для проверки данных

 

int Test_value ()

{

try

{

StrToFloat (Form1-> Edit1->Text);

}

 

catch (...)

{

Form1->Edit1->Focused ();

ShowMessage ("Ошибка в данных");

return -1;

}

 

try

{

StrToFloat (Form1-> Edit2->Text);

}

 

catch (...)

{

Form1->Edit2->Focused ();

ShowMessage ("Ошибка в данных");

return -1;

}

 

try

{

StrToFloat (Form1-> Edit3->Text);

}

 

catch (...)

{

Form1->Edit3->Focused ();

ShowMessage ("Ошибка в данных");

return -1;

}

 

return 0;

}

 

Функция int Test_value () возвращает ноль при условии, что поля ввода не содержат посторонних символов. Если имеется ошибка ввода, то курсор устанавливается в поле ввода.

15.В файл "Function.h" добавляем прототип функции

 

int Test_value ();

 

16.В обработчик события «Panel1Click» вставляем строку

 

if (Test_value ()) return;

 

 

1. Для того чтобы нести программу на «продажу», не забудьте убрать «галку» в поле «Use dinamic RTL»

 

и в поле «Runtime packages«

 

Задание

1. Ответьте на вопрос, что в этой программе не учтено, и как можно ее улучшить?

2. Выведите на Memo коэффициенты разложения и убедитесь, что и Паскаль был прав с треугольником.

3. Разработайте программу, в которой нужно решить подобную задачу. Примеры из курса элементарной математики найти просто!