Вычислить и вывести на экран значение математической функции 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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д