Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
составить алгоритм и программу для вычислений для СИ-программы

Предмет: Программирование и численные методы
Раздел: Алгоритмы и программирование на языке C (Си)
Нужно составить алгоритм и программу на языке C для вычисления [n] значений функции
Y = \frac{A + F(x)}{B}
где [x] равномерно распределены на интервале -1 \leq x \leq 1, а [n] определяется как суммарное количество букв в фамилии, имени и отчестве студента.
Функция [F(x)] задана кусочно:
F(x) = \begin{cases} f_1(x), & x < k \ f_2(x), & k \leq x \leq H \ f_3(x), & x > H \end{cases}
где
\begin{cases} A = x^2 - 0.3x - 1.5 \ B = \ln |F(x)| \ f_1(x) = \sin^3 x \ f_2(x) = x^2 + \tan(x/2) \ f_3(x) = \cos x \ k = -0.8, \quad H = 0.2 \end{cases}
#include
#include
#include
// Функция для вычисления F(x)
double F(double x, double k, double H) {
if (x < k) {
return pow(sin(x), 3);
} else if (x <= H) {
return pow(x, 2) + tan(x / 2.0);
} else {
return cos(x);
}
}
// Подпрограмма для вычисления B = ln|F(x)|
double compute_B(double Fx) {
if (Fx == 0) {
// Обработка ошибки: логарифм от нуля не определен
printf("Ошибка: F(x) = 0, логарифм не определен.\n");
return NAN;
}
return log(fabs(Fx));
}
int main() {
// Ввод фамилии, имени и отчества
char surname[50], name[50], patronymic[50];
printf("Введите фамилию: ");
scanf("%49s", surname);
printf("Введите имя: ");
scanf("%49s", name);
printf("Введите отчество: ");
scanf("%49s", patronymic);
// Подсчет количества букв (без учета пробелов и спецсимволов)
int n = strlen(surname) + strlen(name) + strlen(patronymic);
if (n < 2) {
printf("Недостаточно символов для вычисления n.\n");
return 1;
}
double k = -0.8, H = 0.2;
double x, A, B, Fx, Y;
double h = 2.0 / (n - 1); // шаг по x
printf(" x A B F(x) Y\n");
printf("---------------------------------------------\n");
for (int i = 0; i < n; i++) {
x = -1.0 + i * h;
Fx = F(x, k, H);
B = compute_B(Fx);
if (isnan(B)) {
printf("Пропуск значения при x = %.4f из-за ошибки.\n", x);
continue;
}
A = x * x - 0.3 * x - 1.5;
Y = (A + Fx) / B;
printf("%6.4f %8.4f %8.4f %9.4f %9.4f\n", x, A, B, Fx, Y);
}
return 0;
}compute_B.Если нужно, могу помочь с компиляцией, тестированием или адаптацией кода.