2016-10-11 7 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'에 대해 공부하고 그들이하는 일을 안다면, 주어진 편평한 수에 대한 블록과 바닥을 계산하는 것은 사실 쉽지 않으며 두 개의 간단한 대입 문으로 수행 할 수 있습니다. 종이에 산술적으로 그것을하는 법을 연습 한 다음 그것을 코딩하십시오. 이것은 분명히 숙제이기 때문에, 나는 그것을 알아 내기 위해 당신을 떠나게 될 것입니다. – 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.