Табулирование функции - C (СИ) (71869)
Формулировка задачи:
Написать функцию, которая табулирует любую указанную функцию вида float (float) в интервале x1, x2, на N точек.
Решение задачи: «Табулирование функции»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#define EPS 1e-9
#define M_PI 3.1415926
typedef float (*function) (float);
void tabulator(function f, float x1, float x2, int n) {
float step = (x2 - x1) / n,x,y;
for (x = x1; x <= x2 + EPS; x += step) {
y=f(x);
printf("\n%.2f\t%.2f", x, y);
}
}
float f1(float x) { return sin(x); }
float f2(float x) { return cos(x); }
int main() {
printf("\nTable 1");
tabulator(f1, 0, M_PI, 10);
printf("\nTable 2");
tabulator(f2, 0, M_PI, 10);
fflush(stdin); getchar(); return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с числами с плавающей точкой и определения значения числа Пи.
- Объявление типа данных для функции, которая будет вычислять значения функции на заданном интервале.
- Создание функции
tabulator, которая принимает на вход функцию, границы интервала и количество точек на интервале и выводит значения функции на этом интервале. - Вычисление шага интервала с помощью формулы
step = (x2 - x1) / n. - Создание переменной
xдля хранения текущего значения точки на интервале. - Создание переменной
yдля хранения значения функции на текущей точке. - Создание цикла
for, который будет выполняться отx1доx2 + EPSс шагомstep. - Внутри цикла вычисление значения функции
y = f(x)и вывод значенийxиyна экран с помощью функцииprintf. - Объявление двух функций
f1иf2, которые вычисляют значения синуса и косинуса соответственно. - В функции
mainвызов функцииtabulatorс заданными аргументами для функцииf1иf2. - Вывод таблицы значений функции
f1с помощьюtabulator(f1, 0, M_PI, 10). - Вывод таблицы значений функции
f2с помощьюtabulator(f2, 0, M_PI, 10). - Добавление задержки перед выводом таблицы значений функции
f2с помощьюfflush(stdin)иgetchar(). - Возврат значения
0для завершения работы программы.