Переделал простенькую программу на Паскале в СИ.Не работает.Где грабли?
Это паскаль:
program RUBAKOV;
uses crt;
function MR(x:real):real;
begin
MR:=sin(x-0.3)+0.2*x;
end;
var p1,k,p2,E,x,x1,M:real;
begin
clrscr;
writeln('');
p1:=-1; p2:=1; M:=1.2; K:=1000; E:=0.001;
while p1<p2 do
begin
x:=p1;
x1:=x+abs(MR(x)/M);
while (abs(abs(x1)-abs(x))>=(E)) and (x1<p2) do
begin
x:=x1; x1:=x+abs(MR(x))/M;
end;
if x1<=p2 then writeln(x1:10:9); p1:=x1+K*E;
end;
end.
Это СИ:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
void main ()
{
float a,b,m,k,E,x,x1;
a=-1;b=1;m=1.2;k=1000;E=0.001;
system("cls");
while (a<b)
{x=a;
x1=x+abs(sin(x-0.3)+0.2*x)/m;
while ((abs(abs(x1)-abs(x)) >=E && x1<b))
{x=x1;
x1=x+abs(sin(x-0.3)+0.2*x)/m;}
if (x1<=b) printf("x1=%f\n",x1); a=x1+k*E; }
getch();}
Зарание благодарен
Поменяй abs на fabs.
Спасибо все заработало.