Вычислить функцию (перевести с 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: iostream.h, math.h, stdlib.h
- Задаются константы и переменные: x, y, a, b, s_left, s_right.
- С помощью функции scanf() считывается значение переменной x.
- С помощью условного оператора if() проверяется, принадлежит ли значение x определенному диапазону (0 < x < 2).
- Внутри условного оператора if() проверяется, равно ли значение x 1.
- Если значение x не равно 1, то вычисляются значения переменных a, b, s_right, s_left и y.
- Если значение x равно 1, то вычисляются значения переменных y, s_right, s_left.
- Если значение x не принадлежит диапазону (0 < x < 2), то выводится сообщение
out of range. - Возвращается значение EXIT_SUCCESS.