Программируем функцию для вычисления коэффициентов разложения
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. Разработайте программу, в которой нужно решить подобную задачу. Примеры из курса элементарной математики найти просто!