2016-10-11 8 views
-2

想像してみましょう - 80の家屋があります。それは4フロアと5ブロックを持っています。各ブロックには4つのフラットがあります。 ユーザはフラット番号を入力するように求められ、パスカルプログラムはフラット番号を計算して出力することになっています。これは何らかの種類の計算式を使用して計算する必要があります。私が持っている唯一のヒントは、divとmodの操作を使わなければならないということです。ブロック番号と階をフラットナンバーで見つけよう

家がどのように見えるかこれはある - すべての80の干潟をループし、各16の干潟後のブロック値を増加し、各4つのブロックの後に階段を高めるenter image description here

これまでのところ、私が作成したプログラム。

これは私のコードです:

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'を学び、彼らが何をするのか知っていれば、与えられたフラットナンバーのブロックとフロアを計算することは実際には些細なことであり、2つの単純な代入文で実現できます。紙の上でそれを算術的に行い、それをコード化する方法を考えてください。これは明らかに宿題なので、私はあなたにそれを理解させるつもりです。 – 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. 
関連する問題