-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 に答える