Протабулировать функцию - C (СИ) (73538)
Формулировка задачи:
не могу понять где ошибка... только начали изучать С , а учитель такой ... что в общем помогите ребят))
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
const float a=19.6, b=1.71,e=2.68,s=1,t=3, p=2, z=2.0, x0=1.5, delta_x= 0.78;
const int n=25;
int i=1;
float y=0.0, x=x0;
printf("Rezultati tabulyacii funkcii:");
for (;i<=n ; printf("\nX=%7.5f\tY=%7.5f",x,((x<=1))? sqrt(pow(x,4)+a*b) :((x>=1)&&(x<=2.8))? x*pow(e,a*x) :(x>=2.8)? x/(pow(a,2)+sqrt(pow(b,2))): i++, x+=delta_x));
}Решение задачи: «Протабулировать функцию»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
double func(double x, double a, double b) {
if (x < 1.0) {
return pow( pow(x, 4) + a*b, 0.25 );
} else if (x > 1.0 && x < 2.8) {
return x * exp(a*x);
} else {
return x / ( pow(a, 2) + pow( pow(b, 2), 1.0/3.0 ) );
}
}
int main() {
const double a = 0.91, b = 1.8;
const double x0 = 0.333, xk = 4.1, dx = 0.321;
for (double x = x0; x < xk; x += dx) {
printf("x = %lf\ty = %lf\n", x, func(x, a, b));
}
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция с тремя аргументами и возвращаемым значением типа double
- В функции происходит проверка значения первого аргумента. Если x меньше 1.0, то возвращается результат вычисления выражения pow(pow(x,4)+a*b),0.25)
- Если x больше или равно 1.0 и меньше 2.8, то возвращается результат вычисления выражения xexp(ax)
- Если x больше или равно 2.8, то возвращается результат вычисления выражения x/(pow(a,2)+pow(pow(b,2),1.0/3.0))
- В функции main() определяются константы a, b, x0, xk, dx
- Задается цикл for, который выполняет вычисления функции для каждого значения x от x0 до xk с шагом dx и выводит результаты на экран
- В конце функции main() возвращается 0, что означает успешное выполнение программы