2016-10-11 60 views
-2

想象一下 - 有一個有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. 

是否有任何人誰可以幫我嗎?

+3

那麼你的嘗試與mod和div在哪裏?你學習了嗎? –

+4

如果你研究過'div'和'mod',並且知道它們做了什麼,那麼計算給定單位數的塊和底部實際上是微不足道的,可以用兩個簡單的賦值語句來實現。研究如何在紙面上算術運算,然後編寫代碼。由於這顯然是功課,所以我會讓你弄清楚。 – MartynA

+0

提示:數字16是重要的。 – Stuart

回答

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.