Вычислить функцию (перевести с Pascal) - C (СИ)

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

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

помогите пожалуйста перевести код с Паскаля на Си
var x, y, a, b, s_left, s_right:real;
begin
WriteLn('laboratornya rabota №2');
WriteLn('variant №8');
WriteLn;
Write('x=');
ReadLn(x);
 
if (x>0) and (x<2)
then begin
if(x<1.0)
then begin
a:=sqrt(1.0-x*x);
b:=2*arctan(a/x);
s_right:=2.0*(1.0-x)-(1.0/2.0)*(b-sin(b))+pi/2.0;
s_left:=2.0-s_right;
y:=2.0*(1.0-a);
end else
if x=1
then begin
y:=2;
s_right:=(1.0/2.0)*pi;
s_left:=2.0-s_right;
end else
begin
y:=2.0*sqrt(1.0-(1.0-x)*(1.0-x));
B:=2*arctan(sqrt((1.0-(1.0-x)*(1.0-x))/(x-1.0)));
s_right:=(1.0/2.0)*(B-sin(B));
s_left:=2.0-s_right;
end;
writeln('s_right=', s_right:0:2);
writeln('s_left=', s_left:0:2);
writeln('y=', y:0:2);
end
else
writeln('x vne vichisleniy');
readln;
end.
никто не может помочь что ли?

Решение задачи: «Вычислить функцию (перевести с Pascal)»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int main(int argc, char **argv) {
    
    double x, y, a, b, s_left, s_right;
    scanf("%lf", &x);
    
    if(x > 0 && x < 2) {
        if(x<1) {
            a = sqrt(1.0 - x * x);
            b = 2 * atan(a / x);
            s_right = 2.0 * (1.0 - x) - (1.0 / 2.0) * (b - sin(b)) + M_PI / 2.0;
            s_left = 2.0 - s_right;
            y = 2.0 * (1.0 - a);
        } else if(x == 1.0) {
            y = 2;
            s_right = (1.0 / 2.0) * M_PI;
            s_left = 2.0 - s_right;
        } else {
            y = 2.0 * sqrt(1.0 - (1.0 - x) * (1.0 - x));
            b = 2 * atan(sqrt((1.0 - (1.0 - x) * (1.0 - x)) / ( x - 1.0)));
            s_right = (1.0 / 2.0) * (b - sin(b));
            s_left = 2.0 - s_right;
        }          
        printf("s_right = %0.2lf\n", s_right);
        printf("s_left = %0.2lf\n", s_left);
        printf("y = %0.2lf\n", y);
    } else {
        printf("out of range");
    }
    return EXIT_SUCCESS;        
}

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

  1. Включаются необходимые заголовочные файлы: iostream.h, math.h, stdlib.h
  2. Задаются константы и переменные: x, y, a, b, s_left, s_right.
  3. С помощью функции scanf() считывается значение переменной x.
  4. С помощью условного оператора if() проверяется, принадлежит ли значение x определенному диапазону (0 < x < 2).
  5. Внутри условного оператора if() проверяется, равно ли значение x 1.
  6. Если значение x не равно 1, то вычисляются значения переменных a, b, s_right, s_left и y.
  7. Если значение x равно 1, то вычисляются значения переменных y, s_right, s_left.
  8. Если значение x не принадлежит диапазону (0 < x < 2), то выводится сообщение out of range.
  9. Возвращается значение EXIT_SUCCESS.

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


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

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

11   голосов , оценка 4 из 5