2D数组 - 在带有循环的PASCAL中

时间:2013-12-20 20:00:05

标签: arrays loops pascal

我需要编写一个演示2d数组的程序,该程序需要询问学生姓名,然后是标记..这是15名学生。最后,程序会输出15个带有标记的名称。

我不知道如何准确地操作2D数组,我设法做了简单的版本而不使用for循环。

`

table: array[1..2, 1..15] of string;   {2 rows for 15 columns}


begin
clrscr;
writeln('Enter 15 student names, and a set of marks after each ');
writeln('With marks you can enter more marks after comma for e.g. 34, 26, 31 etc.');

writeln('Enter NAME and SURNAME of STUDENT NR 1 or q to quit ');
read(table[1][1]);                    {read name in row 1 col 1}
readln;                                      
writeln(' Enter MARKS of STUDENT NR 1 ');
read(table[2][1]);                     { read mark in row 2 col 1}
readln;             
clrscr;

writeln('Enter NAME and SURNAME of STUDENT NR 2 or q to quit ');
read(table[1][2]);
readln;             
writeln('Enter MARKS of STUDENT NR 2 ');
read(table[2][2]);
readln;             read marks into row 2 column 2}

`

等。直到15岁的学生...但我知道我可以使用两个for循环来为我做这些而不是为每个学生复制代码...同样的输出......我花了很多时间来弄清楚如何用不同的尝试来做...但仍然混淆使用两个for循环并正确索引此数组。

有人可以通过这种适当的循环来帮助我吗?

由于

1 个答案:

答案 0 :(得分:0)

哇,帕斯卡,很久没有见过它了!这是学习编程的好语言。

尝试这样的事情......

program testarray2d;

uses crt;

var
    table: array[1..2, 1..15] of string;   {2 rows for 15 columns}
    counter: Integer;

Begin
     writeln('Enter 15 student names, and a set of marks after each ');
     writeln('With marks you can enter more marks after comma for e.g. 34, 26, 31 etc.');

      For counter := 1 to 15 do 
       Begin
        writeln('Enter NAME and SURNAME of STUDENT NR ');
        write(counter);
        write(' or q to quit ');
        readln(table[1][counter]);                                
        writeln('Enter MARKS of STUDENT NR ');
        write(counter);
        readln(table[2][counter]);                                  
        clrscr;
      End;
End.

如果有效,请告诉我,因为我还没有测试过。