Описание функции - C (СИ) (69726)

Узнай цену своей работы

Формулировка задачи:

Подскажите, как переделать код, чтобы в main() был чисто ввод значений и вывод результата. Вычисления должны быть представлены как функция и идти до main().
#include<stdio.h>
#include<math.h>
double f(double x)
{
return x*x+2*x-4;
}
int main()
{
double a, b, x, y1, y2;
const double eps=0.01, d=eps/10; 
printf("Vvedite a, b, : \n"); 
scanf("%le%le", &a, &b);
while (b-a > 2*eps) 
{
x=(a+b)/2;
y1=f(x-d);
y2=f(x+d);
(y1 < y2 ? b=x+d : a=x-d);
}
x=(a+b)/2; 
y1=f(x); 
printf("x = %.2lf \ny = %.2lf \n\n",x, y1);
return 0;
}

Решение задачи: «Описание функции»

textual
Листинг программы
#include<stdio.h>
#include<math.h>
 
double f(double x)
{
return x*x+2*x-4;
}
 
void raschet(double &a, double &b, double &x, double &y1)
{
    const double eps=0.01, d=eps/10;
    double y2;
 
    while (b-a > 2*eps)
    {
    x=(a+b)/2;
    y1=f(x-d);
    y2=f(x+d);
    ((y1 < y2) ? b=x+d : a=x-d);
    }
    x=(a+b)/2;
    y1=f(x);
 
}
 
int main()
{
double a, b, x, y1;
 
printf("Vvedite a, b, : \n");
scanf("%le%le", &a, &b);
raschet(a, b, x, y1);
printf("x = %.2lf \ny = %.2lf \n\n",x, y1);
return 0;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию с именем f, которая принимает один аргумент типа double и возвращает double
  3. Определяем функцию raschet, которая принимает пять аргументов типа double по ссылке и выполняет численный метод для решения квадратного уравнения
  4. В функции raschet определяем константу eps и переменную d, которая используется для контроля сходимости
  5. Задаем начальные значения переменных a, b, x и y1
  6. С помощью функции printf выводим сообщение с просьбой ввести значения переменных a и b
  7. С помощью функции scanf считываем значения переменных a и b и сохраняем их в соответствующих переменных
  8. Вызываем функцию raschet, передавая в нее значения переменных a, b, x и y1
  9. В функции raschet в цикле while выполняем численный метод для решения квадратного уравнения, пока разница между значениями a и b больше 2*eps
  10. Внутри цикла вычисляем значение x, как среднее арифметическое a и b
  11. Вычисляем значения y1 и y2, используя функцию f и передавая в нее значения x и x+d
  12. С помощью условного оператора if меняем значения a и b, если значение y1 меньше значения y2
  13. После выхода из цикла while вычисляем значение x, как среднее арифметическое a и b
  14. Вычисляем значение y1, используя функцию f и передавая в нее значение x
  15. С помощью функции printf выводим значения переменных x и y1
  16. Возвращаем 0 из функции main, чтобы указать, что программа успешно завершилась
  17. Программа завершается

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


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

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

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