Перевод С++ в Pascal
Формулировка задачи:
Помогите перевести 2 кода
#include <iostream> #include<cmath> using namespace std; int main() { double a,b,k,x,M,N; cin>>a>>b>>k>>x; if(k>0) { M=(a*b*x/sqrt(k)+2.84); if((x>=0)&&(exp(k*x)+0.54*a*b+pow(M,2)!=0)) {N=(0.84*a*pow(b,3)*pow(sin(x),2)+sqrt(x)/exp(k*x)+0.54*a*b+pow(M,2)); cout<<"N="<<N<<endl; } else cout<<"нет решений"<<endl; } else cout<<"нет решений k=0"<<endl; return 0; }
#include <iostream> using namespace std; #include<cmath> int main () { double x,y; cin>>x; if(x<0.15) { y=pow(sin(x),2); cout<<"y="<<y<<endl; } else{ if(x==0.15) if(2+pow(x,2)>0) { y=1+sqrt(2+pow(x,2)); cout<<"y="<<y<<endl; } else count<<"нет решений"<<endl; else{ y=pow(cos(1+pow(x,2)),2); cout<<"y="<<y<<endl; } } return 0; }
Решение задачи: «Перевод С++ в Pascal»
textual
Листинг программы
const EPS = 0.0001; var a, b, k, x, temp: Real; begin ReadLn(a, b, k, x); if (k > 0) then begin temp := Exp(k*x) + 0.54*a*b + Sqr(a*b*x / Sqrt(k) + 2.84); if ((Abs(temp) < EPS) And ((x > 0) Or (Abs(x) < EPS))) then WriteLn('не решений') else WriteLn('N=', (0.84*a*Sqr(b)*b*Sqr(Sin(x)) + Sqrt(x) / temp):0:2); end else WriteLn('нет решений k<=0'); end.
Объяснение кода листинга программы
- Объявляются переменные:
-
a
,b
,k
,x
,temp
типа Real - Считываются значения переменных
a
,b
,k
,x
с помощью функции ReadLn - Выполняется проверка условия: если
k
больше 0, то - Вычисляется значение переменной
temp
по формуле: Exp(kx) + 0.54ab + Sqr(ab*x / Sqrt(k) + 2.84) - Выполняется проверка условия:
- Если абсолютное значение
temp
меньше чемEPS
иx
больше 0 или абсолютное значениеx
меньше чемEPS
то выводится сообщениене решений
- Иначе выводится значение выражения:N=
и результат вычисления выражения (0.84aSqr(b)bSqr(Sin(x)) + Sqrt(x) / temp) с точностью до двух знаков после запятой - Иначе выводится сообщение
нет решений k<=0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д