C++ 将Turbo Pascal转换为C+;时出错+;代码
下面是一个正在工作的Turbo-Pascal示例C++ 将Turbo Pascal转换为C+;时出错+;代码,c++,turbo-c++,turbo-pascal,C++,Turbo C++,Turbo Pascal,下面是一个正在工作的Turbo-Pascal示例 uses graph, crt; const xmax=600; ymax=400; type vreal=array[1..xmax] of real; var y:vreal; r,h,vmax,vmin,a,b:real; i,linie0:integer; grDriver: Integer; grMode: Integer; s:string; c:char; {*********
uses graph, crt;
const xmax=600;
ymax=400;
type vreal=array[1..xmax] of real;
var
y:vreal;
r,h,vmax,vmin,a,b:real;
i,linie0:integer;
grDriver: Integer;
grMode: Integer;
s:string;
c:char;
{****************************************}
procedure regimgrafic;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
setcolor(15);
end;
{****************************************}
function f(x:real):real;
begin
f:=exp(cos(2*x)*ln(x))+3*sin(x);
end;
{**************************************************************}
procedure calcul(a,b:real;var z:vreal);
begin
h:=abs(b-a)/(xmax-1);
for i:=1 to xmax do z[i]:=f(a+(i-1)*h);
end;
{**************************************************************}
procedure normare(var z:vreal; var l0:integer;var vmax,vmin:real);
var
delta,deplasare:real;
begin
vmax:=z[1];vmin:=z[1];
for i:=2 to xmax do
begin
if z[i]>vmax then vmax:=z[i];
if z[i]<vmin then vmin:=z[i];
end;
delta:=(vmax - vmin)/(ymax);
deplasare:=0-vmin;
l0:=round(ymax-deplasare/delta);
if vmin>0 then l0:=415;
if vmax<0 then l0:=10;
for i:=1 to xmax do
z[i]:=ymax-(z[i]+deplasare)/delta;
end;
{*******************************************************}
procedure axax(linie0:integer);
begin
setcolor(11);
outtextxy(getmaxx-15,linie0-10,'X');
line(20,linie0, getmaxx-20,linie0);
h:=(b-a)/2;
for i:=0 to 2 do
begin
fillellipse(20+i*300,linie0,2,2);
r:=a+i*h;
str(r:0:2,s);
outtextxy(20+i*290,linie0+10,s);
end;
end;
procedure axay;
begin
setcolor(14);
outtextxy(10,10,'Y');
h:=(vmax-vmin);
for i:=0 to 1 do
begin
fillellipse(20,10+i*400,2,2);
r:=vmax-i*h;
str(r:0:2,s);
outtextxy(20,10+i*400,s);
end;
line(20,10,20,getmaxy-65);
end;
procedure modeleazagrafic(y:vreal);
begin
rectangle(1,1,getmaxx,getmaxy);
setcolor(11);
axay;
axax(linie0);
for i:=1 to xmax do putpixel(i+20,10+round(y[i]),15);
outtextxy(20,460,'Alt interval (D)a / (N)u');
end;
begin
repeat
clrscr;
write('Introdu extremitatile intervalului: ');
readln(a,b);
calcul(a,b,y);
normare(y,linie0,vmax,vmin);
regimgrafic;
modeleazagrafic(y);
c:=readkey;
closegraph;
until upcase(c)='N';
end.
请帮助修复这些错误就像您没有阅读错误消息或思考周围的代码一样 前两条与这些线有关:
if((*vmin)>0) l0 = 415;
if(*vmax<0) l0 = 10;
if(*vmin)>0)l0=415;
如果(*VMax不使用数组的Type)。使用<代码> STD::vector < /C> >,因为你被标记为C++ +C!= C++。选择你实际使用的标签,不要只抓取与你问的问题无关的东西。在C和C++中,数组以0的索引开始。<代码> L0是<代码> int */COD>。但是你试图去AISI。gn415
。也许你的意思是*l0=415
。对于第二个错误,我猜getmaxx
是一个函数,因此你应该将它改为getmaxx()
。l0是一个指针(即,它的值是一个地址),如果(*vmin)>0会怎么样l0=415;应该这样做吗?我想你打算写*l0=415。我相信这种混乱是因为在Pascal代码中,没有参数列表的函数调用不需要括号(我不知道Pascal,我只是猜测。)是的,我想是这样的,但只是在扫描Pascal程序后才意识到这确实是这些函数的调用方式。我已经有15年没有用Pascal编程了。看起来我们都遵循了一般的建议,通过查看周围的代码=)对了,没有没有没有括号的getmaxx,str(r:0:2,s)C还是C++会像什么一样锁?@ USSR32548我不明白你在那里问什么。你知道Pascal、C++还是C++吗?是的,我问的是PASCAL指令STR(R:0:2,S)的等价物;C还是C++?
Line 60:(in normare function) invalid conversion from `int' to `int*'
line:61 the same error;
line:69 69 pointer to a function used in arithmetic
if((*vmin)>0) l0 = 415;
if(*vmax<0) l0 = 10;