Вычислить и вывести на экран значение математической функции F - C (СИ)
Формулировка задачи:
Вообще задача такая:
Вычислить и вывести на экран значение математической функции F. Вычисление значения функции F необходимо выполнить с использованием функции print
. F=1)
calculate
, в которую передаются четыре параметра:x, a, b, c
, которые являются целыми положительными числами и вводятся с клавиатуры. Вывод параметров и результата вычисления функции необходимо вынести в отдельную функциюax2+b2x
, если|a|>3, x!=0
; 2)sqr(x)-
F(a)(число фиббоначи)
/x, еслиa>0, x>0
3) else1+x/c
Вот, что я наклепала, но "это" выдаёт кучу ошибок, может кто подправить и объяснить? Заранее огромнейшее спасибо!!#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
float fib(int a);
void print ();
float main()
{
setlocale (LC_ALL, "russian");
int a,b,c;
float x;
printf("Введите x = ");
scanf_s ("%d", &x);
printf("Введите a = ");
scanf_s ("%d", &a);
printf("Введите b = ");
scanf_s ("%d", &b);
printf("Введите c = ");
scanf_s ("%d", &c);
_getch ();
}
int fib(a)
{
if(a==0||a==1) 1;
return fib(a-1)+fib(a-2);
}
float calculate(int a,b,c,x, float F)
{
if (abs(a)>3, x!=0) F=a*x*x+b*b*x;
if (a>0, x>0) F=sqrt(x)-fib/x;
else F=1+x/c;
return F;
void print (a)
{
printf("%f", F);
}Решение задачи: «Вычислить и вывести на экран значение математической функции F»
textual
Листинг программы
#include <math.h> // sqrt
#include <stdio.h> // fgets
#include <stdlib.h> // strtol
double fib(unsigned a)
{
double fnow = 0.0;
double fnext = 1.0;
double tempf;
while( --a ) {
tempf = fnow + fnext;
fnow = fnext;
fnext = tempf;
}
return fnext;
}
double f1(double x, double a, double b)
{
return x * (a * x + b * b);
}
double f2(double x, unsigned a)
{
return sqrt(x) - fib(a) / x;
}
double f3(double x, double c)
{
return 1.0 + x / c;
}
double calculate(unsigned x, unsigned a, unsigned b, unsigned c)
{
if( a > 3 && x != 0 ) return f1(x, a, b);
if( a > 0 && x > 0 ) return f2(x, a);
return f3(x, c);
}
unsigned input(const char* var_name)
{
static char buf[10];
printf("Input %s: ", var_name);
fflush(stdin);
fgets(buf, sizeof(buf), stdin);
return strtol(buf, NULL, 10);
}
void print(unsigned x, unsigned a, unsigned b, unsigned c, double f)
{
printf("x = %i\na = %i\nb = %i\nc = %i\nf = %f\n", x, a, b, c, f);
}
int main(void)
{
unsigned x = input("x");
unsigned a = input("a");
unsigned b = input("b");
unsigned c = input("c");
double f = calculate(x, a, b, c);
print(x, a, b, c, f);
return 0;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы:
для функции sqrt, для функции fgets, для функции strtol. - Определяются функции: — fib(unsigned a) для вычисления чисел Фибоначчи. — f1(double x, double a, double b) для вычисления значения функции F1. — f2(double x, unsigned a) для вычисления значения функции F2. — f3(double x, double c) для вычисления значения функции F3. — calculate(unsigned x, unsigned a, unsigned b, unsigned c) для выбора и вычисления соответствующей функции в зависимости от переданных параметров. — input(const char* var_name) для считывания ввода пользователя с клавиатуры. — print(unsigned x, unsigned a, unsigned b, unsigned c, double f) для вывода на экран значений переменных и результата вычисления функции.
- В функции main() считываются значения переменных x, a, b, c с помощью функции input(), а затем вычисляется и выводится на экран значение функции F с помощью функции calculate() и функции print().