Прототип функции - 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, чтобы указать на успешный исход работы программы