我需要编写一个演示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循环并正确索引此数组。
有人可以通过这种适当的循环来帮助我吗?
由于
答案 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.
如果有效,请告诉我,因为我还没有测试过。