Pascal 如何在数组中使用变量?
我在做一门课程时使用PASCAL,我在做作业时遇到了问题,在我的程序中,我使用了两个数组,它们使用来自用户输入的变量,但当我运行程序时,它出现了一个错误:无法计算常量表达式。阵列的代码为:Pascal 如何在数组中使用变量?,pascal,freepascal,Pascal,Freepascal,我在做一门课程时使用PASCAL,我在做作业时遇到了问题,在我的程序中,我使用了两个数组,它们使用来自用户输入的变量,但当我运行程序时,它出现了一个错误:无法计算常量表达式。阵列的代码为: Var x : integer; s : array[1..x] of real; n : array[1..x] of string[30]; 这里x是用户的输入,数组是否有从1到x的方法?如果x是一个变量,那么它实际上不会工作。所谓的静态数组的范围必须是一
Var
x : integer;
s : array[1..x] of real;
n : array[1..x] of string[30];
这里x是用户的输入,数组是否有从1到x的方法?如果
x
是一个变量,那么它实际上不会工作。所谓的静态数组的范围必须是一个常量表达式,即它必须在编译时已知
所以你想要的东西不会起作用
不过,在FreePascal中,您可以使用。它们的长度可以在运行时设置和更改
var
x: Integer;
s: array of Real;
n: array of string[30]; // why not just string?
后来:
x := someUserInput(); // pseudo code!
SetLength(s, x);
SetLength(n, x);
您应该知道动态数组是基于0
的,因此索引从0
运行到x-1
。但是由于数组的限制,您应该使用and:
(
Low()
和High()
不是主题,但是要知道它们也可以用于静态数组,并且它们返回实际的数组边界——我总是使用High和Low来实现这一点)如果x
是一个变量,那么这实际上是行不通的。所谓的静态数组的范围必须是一个常量表达式,即它必须在编译时已知
所以你想要的东西不会起作用
不过,在FreePascal中,您可以使用。它们的长度可以在运行时设置和更改
var
x: Integer;
s: array of Real;
n: array of string[30]; // why not just string?
后来:
x := someUserInput(); // pseudo code!
SetLength(s, x);
SetLength(n, x);
您应该知道动态数组是基于0
的,因此索引从0
运行到x-1
。但是由于数组的限制,您应该使用and:
(
Low()
和High()
不是主题,但要知道它们也可以用于静态数组,并且它们返回实际的数组边界——我总是使用High和Low)这里并没有使用@RudyVelthuis建议的动态数组这样的托管类型那么简单,而是提供了一个更有趣的解决方案,提供了一些理解
关于其内部工作原理:)
这里并没有使用@RudyVelthuis建议的动态数组这样的托管类型那么简单,但更有趣的解决方案提供了一些理解 关于其内部工作原理:)
你是不是少了一个
代码>?是的,这只是代表我的一个输入错误,我没有遗漏任何内容;在我的程序中,你需要一个动态数组。下次请说明确切的编译器和版本。你不缺少一个代码>?是的,这只是代表我的一个输入错误,我没有遗漏任何内容;在我的程序中,你需要一个动态数组。下次请说明确切的编译器和版本。是的,比一个简单的动态数组有趣得多。这简直太糟糕了advice@DavidHeffernan在我对代码的介绍中,你不明白什么?为什么停在这里。为什么不把整件事都写在asm里呢。这是非常糟糕的建议。因此我投了一票。你说这是个笑话。“你希望得到什么样的回应?”大卫·费弗南我的回答是半开玩笑,但也是出于教育目的。基础知识(直到汇编程序)的运气导致了“吸血鬼活动”:)是的,比简单的动态数组更“有趣”。这简直是糟糕透顶advice@DavidHeffernan在我对代码的介绍中,你不明白什么?为什么停在这里。为什么不把整件事都写在asm里呢。这是非常糟糕的建议。因此我投了一票。你说这是个笑话。“你希望得到什么样的回应?”大卫·费弗南我的回答是半开玩笑,但也是出于教育目的。幸运的基础知识(直到装配工)导致“吸血鬼活动”:)谢谢!我似乎遇到了更多的问题,我认为这些问题与数组有关,它表示错误:运算符没有重载:“SmallInt的动态数组”div“SmallInt”,“SmallInt的动态数组”mod“ShortInt”。我把我的整个计划都放在了吸血鬼行动中detected@David:是的,确实如此。@LeCarloVC:如果您有更多问题,您可以将其作为新问题发布。在体育运动中,移动球门柱不受欢迎,这里也不受欢迎。@LeCarloVC:我发现您的代码有很多问题。如果正确地格式化代码,您可能也可以看到它们。不要混合不同风格的关键字和工作的缩进。而a-b
是减法。谢谢!我似乎遇到了更多的问题,我认为这些问题与数组有关,它表示错误:运算符没有重载:“SmallInt的动态数组”div“SmallInt”,“SmallInt的动态数组”mod“ShortInt”。我把我的整个计划都放在了吸血鬼行动中detected@David:是的,确实如此。@LeCarloVC:如果您有更多问题,您可以将其作为新问题发布。在体育运动中,移动球门柱不受欢迎,这里也不受欢迎。@LeCarloVC:我发现您的代码有很多问题。如果正确地格式化代码,您可能也可以看到它们。不要混合不同风格的关键字和工作的缩进。而a-b
是减法。