Нужно перевести из с++ в си - C (СИ) (155382)

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

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

#include <iostream.h>
#include <math.h>
#include <conio.h>
 
float f(float x)
{
    return (1.0/(1.05*x))-pow(x,2);
    
}
float fp(float x)
{
        return -1/pow(sin(x),2)-2*x;
    
}
float horda(float a, float b, float eps)
{
 int ii=0;
        float c;
        do
        {
                c = a - f(a)*(b-a)/(f(b)-f(a));
                if(f(a)*f(c)<0)
                {
                        b = c;
                }
                else
                {
                        a = c;
        }
           ii++;    
    }while(fabs(f(c))>eps);
    cout<<"iteraciy: "<<ii<<endl;
        return c;
} 
float Newton(float a, float eps)
{
 int ii=0;
        do
        {
        a = a - f(a)/fp(a);
         ii++;
    }while(fabs(f(a))> eps);
        cout<<"iteraciy: "<<ii<<endl;
        return a;
} 
void main()
{
  clrscr();
        float a,b,eps=0.001;
        cout<<"a = ";cin>>a;
        cout<<"b = ";cin>>b;
        cout<<"HORD x = "<<horda(a,b,eps)<<"\n\n";
        cout<<"NEWTON x = "<<Newton(a,eps)<<"\n";
   getch();
}

Решение задачи: «Нужно перевести из с++ в си»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
float f(float x)
{
   return (1.0 / (1.05 * x)) - pow(x, 2);
}
 
float fp(float x)
{
   return -1 / pow(sin(x), 2) - 2 * x;
}
 
float horda(float a, float b, float eps)
{
   int ii = 0;
   float c;
   do
   {
      c = a - f(a) * (b - a) / (f(b) - f(a));
      if (f(a)*f(c) < 0)
      {
         b = c;
      }
      else
      {
         a = c;
      }
      ii++;
   }
   while (fabs(f(c)) > eps);
   printf("iteraciy: %d\n", ii);
 
   return c;
}
 
float newton(float a, float eps)
{
   int ii = 0;
   do
   {
      a = a - f(a) / fp(a);
      ii++;
   }
   while (fabs(f(a)) > eps);
 
   printf("iteraciy: %d\n", ii);
 
   return a;
}
 
int main()
{
   float a, b, eps = 0.001;
 
   printf("a = ");
   scanf("%f", &a);
 
   printf("b = ");
   scanf("%f", &b);
 
   printf("HORD x = %f\n\n", horda(a, b, eps));
 
   printf("NEWTON x = %f\n", newton(a, eps));
 
   getchar();
 
   return 0;
}

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

  1. Переменная a используется как начальное приближение для функции horda и newton.
  2. Переменная b используется как конечное приближение для функции horda.
  3. Функция horda использует метод Золотого сечения для нахождения корня квадратного уравнения.
  4. Функция newton использует метод Ньютона для нахождения корня квадратного уравнения.
  5. В функции main пользователю предлагается ввести значения для a и b, затем результаты вычислений выводятся на экран.
  6. Значение eps используется как критерий остановки для итерационных методов.
  7. Функция f представляет собой квадратичную функцию вида 1/x^2 - x^2.
  8. Функция fp представляет собой функцию, производную от f.
  9. Функция horda вычисляет корень квадратного уравнения с помощью метода Золотого сечения.
  10. Функция newton вычисляет корень квадратного уравнения с помощью метода Ньютона.
  11. Значение iteraciy используется для отслеживания количества итераций, выполненных функцией horda или newton.
  12. Значение fabs(f(a)) используется для проверки критерия остановки.
  13. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  14. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  15. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  16. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  17. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  18. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  19. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.
  20. Значение fabs(f(a)) > eps используется для проверки, является ли абсолютное значение функции больше заданной точности.

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


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

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

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