Прототип функции - C (СИ)
Формулировка задачи:
Препод сказал, что такое оформление функции неправильно void Dix(double &a, double &b, double &x, double &y1) и что надо заменить знак амперсанта на звездочку. Пробую - не получается. Подскажите как это сделать и зачем вообще менять на звездочку.
#include<stdio.h> #include<math.h> double f(double x) { double x1; x1=x*x+2*x-4; return x1; } void Dix(double &a, double &b, double &x, double &y1) { const double eps=0.000001; double y2; while (fabs(b-a) >eps) { x=(a+b)/2; y1=f(a); y2=f(b); ((y1 < y2) ? b=x : a=x); } x=(a+b)/2; y1=f(x); } int main() { double a, b, x, y1; printf("Vvedite a : \n"); scanf("%le", &a); printf("Vvedite b : \n"); scanf("%le", &b); Dix(a, b, x, y1); printf("x = %.2lf \ny = %.2lf \n\n",x, y1); return 0; }
Решение задачи: «Прототип функции»
textual
Листинг программы
#include<stdio.h> #include<math.h> double f(double x) { double x1; x1=x*x+2*x-4; return x1; } void Dix(double *a, double *b, double *x, double *y1) { const double eps=0.000001; double y2; while (fabs(*b-*a) >eps) { *x=(*a+*b)/2; *y1=f(*a); y2=f(*b); if(*y1 < y2) *b=*x; else *a=*x; //(*y1 < y2) ? *b=*x : *a=*x; } *x=(*a+*b)/2; *y1=f(*x); } int main() { double a, b, x, y1; printf("Vvedite a : \n"); scanf("%le", &a); printf("Vvedite b : \n"); scanf("%le", &b); Dix(&a, &b, &x, &y1); printf("x = %.2lf \ny = %.2lf \n\n",x, y1); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию
f(double x)
, которая принимает аргументx
и возвращает значениеx1
- Определяем функцию
Dix(double *a, double *b, double *x, double *y1)
, которая принимает указатели на переменныеa
,b
,x
,y1
и выполняет вычисления с использованием этих переменных - В функции
Dix
объявляем константуeps
для контроля точности вычислений - Задаем начальные значения переменных
a
,b
,x
,y1
в функцииmain
- Выводим сообщение и призыв к вводу значения переменной
a
- Выводим сообщение и призыв к вводу значения переменной
b
- Вызываем функцию
Dix
с передачей указателей на переменныеa
,b
,x
,y1
- Выводим сообщение и призыв к вводу значения переменной
x
- Выводим сообщение и призыв к вводу значения переменной
y1
- Выводим значения переменных
x
иy1
с точностью до 2 знаков после запятой - Возвращаем 0 из функции
main
, чтобы указать на успешный исход работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д