我试图对两种类型的阵列使用相同的打印程序(第一个arry长度为10,第二个数组长度为15)。
我在互联网上找不到任何解决方案。有没有人解决这个问题。
这是两个数组
program pp1;
const
m=10;
n=15;
type
matrix1=array[1..m] of integer;
matrix2=array[1..n] of integer;
var
m1:matrix1;
m2:matrix2;
这是它尝试过的方法。在方法'x'中,数组的长度。
procedure writeMatrix(var data: array of integer ;x:integer);
var
j:integer;
begin
for j:=1 to x do
begin
write(data[j]:3);
end;
end;
我的主要方法
begin
writeMatrix(m1,10);
writeMatrix(m2,10);
end.
如何使用相同的writeMatrix方法打印两个数组..是否有任何搁浅的方法。
答案 0 :(得分:0)
正如我在之前的评论中所说的那样,你的实现很好,但你必须在打印之前在矩阵中放一些东西,否则你会在屏幕上得到一堆零(最好的)。
试试这个:
program pp1;
const
m=10;
n=15;
type
matrix1=array[1..m] of integer;
matrix2=array[1..n] of integer;
var
m1:matrix1;
m2:matrix2;
procedure fillMatrix(var data:array of integer; x:integer);
var
j:integer;
begin
for j:= 1 to x do begin
data[j]:=j;
end;
end;
procedure writeMatrix(var data: array of integer; x:integer);
var
j:integer;
begin
for j:=1 to x do
begin
write(data[j]:3);
end;
end;
begin
fillMatrix(m1,10);
fillMatrix(m2,10);
writeMatrix(m1,10);
writeMatrix(m2,10);
readln;
readln;
end.
提示:考虑避免使用全局变量,在这种情况下m1
和m2
应该在主程序中声明。
答案 1 :(得分:0)
我如何使用相同的 writeMatrix 方法来打印两个数组.. 有没有办法做到这一点。
是的,有一个标准的方法。它被称为conformant-array 参数。它在 ISO standard 7185(标准“未扩展”帕斯卡)的(级别 1)中进行了标准化。它看起来像这样:
procedure print(protected matrix: array[
columnMinimum..columnMaximum: integer;
rowMinimum..rowMaximum: integer
] of integer);
const
totalWidth = 6;
var
x: type of columnMinimum;
y: type of rowMinimum;
begin
for y := rowMinimum to rowMaximum do
begin
for x := columnMinimum to columnMaximum do
begin
write(matrix[x, y]:totalWidth);
end;
writeLn;
end;
end;
就好像有额外的 const
值,但它们是动态的,取决于传递的 matrix
。此代码还使用类型查询 (type of …
) 和 protected
修饰符,两者均在 ISO 10206 (Extended Pascal) 中定义,该标准建立在 ISO 7185 之上。在 EP 中,您可以也可以考虑通过架构诸如参数之类的数据。