Перевод С++ в 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