Вычислить значение выражения - C (СИ) (71255)

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

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

Program Zz;
function f(x:real):real;
begin
f:=1.32-1.43*x+1.32*sin(x)-0.8*ln(1+x);
end;
var a,b,x,c,eps:real;
n:integer;
begin
writeln('Введите левую границу');
readln(a);
writeln('Введите правую границу');
readln(b);
writeln('Введите Эпсилон');
readln(eps);
n:=0;
while abs(a-b)>eps do
begin
c:=(a+b)/2;
if f(a)*f(c)<=0 then b:=c
else a:=c;
x:=(a+b)/2;
n:=n+1
end;
writeln('x=',x:0:5,' f(x)=',f(x):0:3,' ','Количество итераций=',n);
end.
_____ Дан код на паскале, перевидите, кому не сложно на СИ.Спасибо.

Решение задачи: «Вычислить значение выражения»

textual
Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <locale.h>
 
double f(double x);
 
int main(){
    setlocale(LC_ALL, "RUSSIAN");
    double a, b, x, c, eps;
    int n=0;
 
    printf("Введите левую границу: ");
    scanf("%lf", &a);
    fflush(stdin);
 
    printf("Введите правую границу: ");
    scanf("%lf", &b);
    fflush(stdin);
 
    printf("Введите Эпсилон: ");
    scanf("%lf", &eps);
    fflush(stdin);
 
    while(abs(a-b)>eps){
        c=(a+b)/2;
 
        if(f(a)*f(c)<=0){
            b=c;
        }else{
            a=c;
        }
 
        x=(a+b)/2;
        n++;
    }
 
    printf("x=%.5lf, f(x)=%.3lf, Количество итераций=%i.\n", x, f(x), n);
 
    return 0;
}
 
double f(double x){
    return 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x);
}

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

  1. Объявлены переменные: a, b, x, c, epsions,nтипаdouble, а также переменнаяintтипаn`.
  2. Выполняется функция setlocale(LC_ALL,RUSSIAN), которая задает русскоязычную локализацию.
  3. Определена функция f(double x).
  4. В главном цикле программы выполняется поиск корня методом деления отрезка пополам.
  5. На каждой итерации цикла вычисляется значение функции f(a), f(b), f(c), f(x).
  6. Если выполняется условие f(a)*f(c)<=0, то значение переменной b заменяется на значение переменной c.
  7. Если условие не выполняется, то значение переменной a заменяется на значение переменной c.
  8. После каждой итерации значение переменной x обновляется как среднее арифметическое a и b.
  9. Каждое значение x выводится на экран с помощью printf(x=%.5lf, x).
  10. Каждое значение функции f(x) выводится на экран с помощью printf(f(x)=%.3lf, f(x)).
  11. Каждое количество итераций выводится на экран с помощью printf(Количество итераций=%i.\n, n).
  12. В конце программы выполняется оператор return 0, который завершает выполнение программы.
  13. Функция f(double x) вычисляет значение функции, которую необходимо приблизить к нулю.
  14. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  15. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  16. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  17. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  18. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  19. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).
  20. Значение функции f(x) вычисляется с помощью формулы 1.32-1.43*x+1.32*sin(x)-0.8*log(1+x).

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


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

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

14   голосов , оценка 4.071 из 5