-2

想象一下 - 有一栋有 80 套公寓的房子。它有4层和5个街区。每个街区有4个单位。要求用户输入平面数,Pascal 程序应该计算和输出平面数。这必须使用某种公式来计算。我唯一的提示是我必须使用 div 和 mod 操作。

房子是这样的——在此处输入图像描述

到目前为止,我已经创建了一个程序,它循环遍历所有 80 个单位,每 16 个单位增加块值,每 4 个块增加楼梯。

这是我的代码:

program project1;
var
  i, floors, blocks, flats, flat, block, floor, blockCounter, floorCounter : integer;
begin
  floors := 4;
  blocks := 5;
  flats := 80;

  while true do
  begin
    write('Flat number: ');
    read(flat);

    block := 1;
    floor := 1;
    blockCounter := 0;
    floorCounter := 0;

    for i := 1 to 80 do
    begin
      blockCounter := blockCounter + 1;
      floorCounter := floorCounter + 1;
      if (floorCounter = 4) then
      begin
         floorCounter := 0;
         floor := floor + 1;
      end;

      if (blockCounter > 16) then
      begin
         block := block + 1;
         blockCounter := 0;
         floorCounter := 0;
         floor := 1;
      end;

      if (i = flat) then
      begin
         writeln('Flat nr. ', flat, ' is in ', floor, '. floor and in ', block, '. block!');
      end;

    end;
  end;
end.

有没有人可以帮我解决这个问题?

4

1 回答 1

1

我终于自己解决了我的问题。我终于理解了 div 的工作原理,所以我能够解决这个问题。

program Maja;
var dzivoklis, kapnutelpa, stavs : integer;
begin

  while true do
  begin
    write('Ievadi dzivokla numuru: ');
    read(dzivoklis);

    kapnutelpa := ((dzivoklis - 1) div 16) + 1;
    stavs := (((dzivoklis - 1) mod 16) div 4) + 1;
    writeln('Kapnutelpa: ', kapnutelpa);
    writeln('Stavs: ', stavs);
    writeln();
  end;

end.
于 2016-10-17T18:46:12.820 回答