var dnyarr:array of byte; i:integer;setlength(dnyarr,100);//get memoryfor i:=0 to 99 do dnyarr[i]:=i;setlength(dnyarr,0); //free memory
{是不是这个意思?}var Arr : array of Char; //这只是声明了一个指针,未在堆内存分配空间procedure TForm1.Button1Click(Sender: TObject); begin SetLength(Arr, 4); //此时已在堆内存分配四个字节的空间,Arr指向它 //对数组进行操作.... SetLength(Arr, 1000);//随时可以改变数组的大小 end;
在Edit1.text输入一个N 计算 1+(1+2)+(1+2+3)....+(1+2+3+..+n) procedure TForm1.Button1Click(Sender: TObject); var i,a,sum,n:integer; result:string; myarray:array of integer; begin n:=strtoint(edit1.Text); SetLength(myarray,n); sum:=0; a:=0; for i:=1 to n do begin a:=a+1; myarray[i]:= a; if i=1 then myarray[i]:=1 else myarray[i]:=myarray[i-1]+i; sum:=sum+myarray[i]; end; result:=inttostr(sum); label1.Caption:=result;end;哪里错了?
procedure TForm1.Button1Click(Sender: TObject); var i,a,sum,n:integer; result:string; myarray:array of integer; begin n:=strtoint(edit1.Text); SetLength(myarray,n); sum:=0; a:=0; for i:=1 to n do begin a:=a+1; myarray[i]:= a; sum:=sum+myarray[i]; end; result:=inttostr(sum); label1.Caption:=result;end;
修正一下(上例不能计两次数):procedure TForm1.Button1Click(Sender: TObject); var i,a,sum,n:integer; result:string; myarray:array of integer; begin n:=strtoint(edit1.Text); SetLength(myarray,n+1); sum:=0; a:=0; for i:=1 to High(myarray) do begin a:=a+1; myarray[i]:= a; sum:=sum+myarray[i]; end; result:=inttostr(sum); label1.Caption:=result; myarray:=nil; end;
procedure TForm1.Button1Click(Sender: TObject); var i,a,sum,n,v:integer; result:string; myarray:array of integer; begin n:=strtoint(edit1.Text); SetLength(myarray,n+1); sum:=0; a:=0; for i:=1 to High(myarray) do begin a:=a+1; myarray[i]:= a; if i>1 then for v :=1 to myarray[i] do sum:=sum+v else sum:=sum+1; end; result:=inttostr(sum); label1.Caption:=result; myarray:=nil; end; {当输入10时,结果等于220,楼主你看主否正确} {当输入3时,即:1+(1+2)+(1+2+3)=10}
如果以上的算法是正确,岂不是以下方法更为简洁?procedure TForm1.BitBtn2Click(Sender: TObject); var i,j,sum:integer; begin sum:=0; for i:=1 to strtoint(edit1.Text)+1 do begin for j :=1 to i-1 do sum:=sum+j; end; label1.Caption:=inttostr(sum); end;
兄弟,不知道你两个程序有没有跑过,第一个还好,不过也有点小问题 我要算N=10000的时候就算不出来了(我已经把变量类型改过再试的int64)第二个程序根本就跑不了 么 我自己原来那个程序有点小问题,就是FOR循环有点越界了for i:=0 to n-1 其他都好的,已经跑过了,虽然你给的答案不对,但分还是给你了,希望一起切磋,我是初学者,多指教
dnyarr:array of byte;
i:integer;setlength(dnyarr,100);//get memoryfor i:=0 to 99 do dnyarr[i]:=i;setlength(dnyarr,0); //free memory
Arr : array of Char; //这只是声明了一个指针,未在堆内存分配空间procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(Arr, 4); //此时已在堆内存分配四个字节的空间,Arr指向它
//对数组进行操作....
SetLength(Arr, 1000);//随时可以改变数组的大小
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,a,sum,n:integer;
result:string;
myarray:array of integer;
begin
n:=strtoint(edit1.Text);
SetLength(myarray,n);
sum:=0;
a:=0;
for i:=1 to n do
begin
a:=a+1;
myarray[i]:= a;
if i=1 then myarray[i]:=1
else myarray[i]:=myarray[i-1]+i;
sum:=sum+myarray[i];
end; result:=inttostr(sum);
label1.Caption:=result;end;哪里错了?
procedure TForm1.Button1Click(Sender: TObject);
var
i,a,sum,n:integer;
result:string;
myarray:array of integer;
begin
n:=strtoint(edit1.Text);
SetLength(myarray,n);
sum:=0;
a:=0;
for i:=1 to n do
begin
a:=a+1;
myarray[i]:= a;
sum:=sum+myarray[i];
end;
result:=inttostr(sum);
label1.Caption:=result;end;
var
i,a,sum,n:integer;
result:string;
myarray:array of integer;
begin
n:=strtoint(edit1.Text);
SetLength(myarray,n+1);
sum:=0;
a:=0;
for i:=1 to High(myarray) do
begin
a:=a+1;
myarray[i]:= a;
sum:=sum+myarray[i];
end;
result:=inttostr(sum);
label1.Caption:=result;
myarray:=nil;
end;
你的意思是不是在EDIT1.TEXT输入10,就得于(1+2+3+4+5+6+7+8+9+10)????
procedure TForm1.Button1Click(Sender: TObject);
var
i,a,sum,n,v:integer;
result:string;
myarray:array of integer;
begin
n:=strtoint(edit1.Text);
SetLength(myarray,n+1);
sum:=0;
a:=0;
for i:=1 to High(myarray) do
begin
a:=a+1;
myarray[i]:= a;
if i>1 then
for v :=1 to myarray[i] do
sum:=sum+v
else
sum:=sum+1;
end;
result:=inttostr(sum);
label1.Caption:=result;
myarray:=nil;
end;
{当输入10时,结果等于220,楼主你看主否正确}
{当输入3时,即:1+(1+2)+(1+2+3)=10}
var
i,j,sum:integer;
begin
sum:=0;
for i:=1 to strtoint(edit1.Text)+1 do
begin
for j :=1 to i-1 do
sum:=sum+j;
end;
label1.Caption:=inttostr(sum);
end;