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