通过固定号码查找块号和楼层

时间:2016-10-11 08:10:23

标签: pascal lazarus mod

想象一下 - 那里有一个有80个单位的房子。它有4层楼和5个街区。每个街区有4个单位。 要求用户输入统一号码,Pascal程序应该计算并输出统一号码。必须使用某种公式计算。我唯一的提示是我必须使用div和mod操作。

这就是房子的样子 - enter image description here

到目前为止,我已经创建了程序,它遍历所有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.

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

1 个答案:

答案 0 :(得分: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.