我需要在pascal中创建一个巨大的数组,这样的事情可能吗?
我知道大小号码,我的意思是它不是n
或未知,它只是一个非常大的数字:
2 ^ 255
我可以这样做吗?如果没有,还有什么其他方法可以让这样的事情发生吗? 提前致谢
更新: 我试图解决的问题是,通过给出1到255之间的数字(包括1和255),我需要打印所有格雷码,其长度为该数字,例如: 给n = 2的程序应该打印: 00,01,11,10
因为我有可以输入的最大大小数量,所以我假设我用最大数字制作一个数组,事情可能是我可以通过递归来解决这个问题,但是我对pascal很新我不知道我怎么能这样做(至少现在还没有)
这就是我的意思:
type arr = array[1..255,1..MAXINT] of integer;
提示和提示可能非常有用< 3
答案 0 :(得分:0)
我猜这是一个XY problem。在数组中存储如此大量的数据而不是按需获取它似乎毫无用处。
原因如下:
结论:
function Foo(const bt:byte; const it: cardinal): integer;
来获取必要的值?您将从Foo(100 ,32000)
而不是MyArray[100, 32000]
。Foo
计算的值不同),您可以将它们存储在array of TMyRec
(或TList)中{{1} }。答案 1 :(得分:0)
我不熟练帕斯卡,但这是我写的东西。它需要一个数字输入并将其转换为二进制,然后转换为格雷码。
这是我能做的最好的事情,因为Pascal不再是我的主要工作。 :)
Uses Math;
var
a,b,d,e,f:integer;
c:array[1..255] of integer;
begin
write('input a decimal number! ');
readln(a);
write('grey code of decimal ',a,' is ');
if a<=1 then write(a) else
repeat
b:=b+1;
d:=a div 2;
c[b]:=a mod 2;
if d<=1 then
begin
b:=b+1;
c[b]:=d;
end;
a:=d;
until d<=1;
for e:=b downto 1 do
begin
//HERE YOU WOULD NEED TO EDIT AND FIX THIS, I THINK THIS WILL ONLY WORK FOR
//1-9
write(c[e -1] xor 1 shl (c[e]>>1));
end;
readln
end.