Pascal Arrays无法弄清楚如何从数组中打印信息

时间:2015-12-16 14:56:38

标签: arrays pascal

我试图编写一个程序来跟踪工厂中7台机器生产的产品,这些产品都生产相同的10种产品。

程序要求用户输入机器ID(A,B,C ... G) 然后是产品ID(0,1,2 ... 9) 最后,程序要求0或1将产品标记为质量好或质量差。

我把所有这些信息都放到了三个数组中。我接下来要做的就是我坚持的部分。我必须从所有信息中创建两个表。

第一张桌子是一张优质产品的表格。它必须是一个二维表,其中MachineIDs沿顶部运行,ProductIDs沿着侧面运行。

每台机器和每件产品都需要运行总计。因此,在单元格[A0]中,需要总计机器A生产product0的次数,并将其标记为GOOD。然后[A1]依此类推[G9]

第二个表格完全相同,只是这次只计算坏产品。

在底部需要有每台机器生产的所有产品。在右手边,必须有所有单独的产品都是所有机器。

到目前为止,这是我的代码。

program Production;

var machine: array of char;
  var product: array of integer;
  var quality: array of integer;
  var min, number, extra: integer;
  var machineID: array[1..7] of char;
  var productID: array[1..10] of char;
  var x, y, count: integer;

begin

  x:= 0;
  y:= 0;
  number := 0;
  min := 5;
  extra := 5;
  SETLENGTH( machine, min );
  SETLENGTH( product, min );
  SETLENGTH( quality, min );
  writeln('Input Machine ID ( A, B, C, D, E, F or G ) ');
  readln(machine[number] );
  while (machine[number] <> '*') do
  begin
    while ( ORD( machine[number] ) < 65 ) or ( ORD( machine[number] ) > 71 ) do
    begin
      writeln('Input Invalid. Please try again.');
      readln(machine[number] );
    end;
    writeln('Input Product Number ( 0, 1, 2, 3, 4, 5, 6, 7, 8 or 9 ) ');
    readln(product[number] );
    while ( product[number] < 0 ) or ( product[number] > 9 ) do
    begin
      writeln('Input Invalid. Please try again.');
      readln(product[number] );
    end;
    writeln('Quality Control Check. Input 0 for GOOD or 1 for BAD.');
    readln(quality[number] );
    while ( quality[number] <> 0 ) and ( quality[number] <> 1 ) do
    begin
      writeln('Input Invalid. Please try again.');
      readln(quality[number] );
    end;
    number := number + 1;
    writeln('Input Machine ID ( A, B, C, D, E, F or G ) ');
    readln(machine[number] );
  end;
  for count := 0 to number - 1 do
      begin
        writeln('Machine ID = ',machine[count] );
        writeln('Product ID = ',product[count] );
        writeln('Quality = ',quality[count] );
      end;
  writeln('');
  writeln('');
  writeln('EXIT');
  readln;
end. 

有人能告诉我甚至如何去做吗?我完全不知所措。

1 个答案:

答案 0 :(得分:1)

我会稍微改变一下这个问题。在我记录了用户输入的一个数据(机器,产品和质量)之后,我将它存储在一个表中 - 或者在这种情况下以三维数组存储。如果我没记错的话,你可以创建如下内容:

var myTable: array[1..7, 1..10, 1..2] of integer;

表格的尺寸如下:

  • 1..7将是机器Ids
  • 1..10将是产品Ids
  • 1..2将是好/坏。

一旦我收到用户的所有输入,我只需在表格中增加相应的字段。例如。假设用户输入是:{机器B,产品2,好}然后我们

myTable[1, 2, 0] := myTable[1, 2, 0] + 1;

因此,当我们想要打印出我们的表格时,我们可以:

for i := 0 to 7 do
    begin
    for j := 0 to 10 do
        begin
            write(myTable[i,j,0] + ' ');  { i,j,0 for the good; i,j,1 for the bad values }
        end;
    writeln('');
    end;