Прототип функции - 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;
}

Объяснение кода листинга программы

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию f(double x), которая принимает аргумент x и возвращает значение x1
  3. Определяем функцию Dix(double *a, double *b, double *x, double *y1), которая принимает указатели на переменные a, b, x, y1 и выполняет вычисления с использованием этих переменных
  4. В функции Dix объявляем константу eps для контроля точности вычислений
  5. Задаем начальные значения переменных a, b, x, y1 в функции main
  6. Выводим сообщение и призыв к вводу значения переменной a
  7. Выводим сообщение и призыв к вводу значения переменной b
  8. Вызываем функцию Dix с передачей указателей на переменные a, b, x, y1
  9. Выводим сообщение и призыв к вводу значения переменной x
  10. Выводим сообщение и призыв к вводу значения переменной y1
  11. Выводим значения переменных x и y1 с точностью до 2 знаков после запятой
  12. Возвращаем 0 из функции main, чтобы указать на успешный исход работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы