Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.235.226.14] |
|
Сообщ.
#1
,
|
|
|
Как-то давно я обращался в паскалевский форум с просьбой помочь написать реализацию одной "звездонутой" задачи... Так правильно мы её и не решили - и меня тогда направили к вам(а я постеснялся ). В силу обстоятельств обращаюсь только сейчас(гложет что-то внутри - не написал я её ).
Пусть даны целые числа m,n(часы, минуты), 0<=m<=11, 0<=n<=59, определяющие время суток. Определить наименьшее время(число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелка на циферблате: а)совпадут; б)расположатся перпендикулярно друг другу. Вроде бы как задача не стоит и выеденного яйца... Но вот западло - разрешено использовать только оператор присваивания (ввода/вывода тоже можно). |
Сообщ.
#2
,
|
|
|
тебе надо решить в принципе, или красиво?
если в принципе, то можно забецать здоровенный двумерный массив из предопределенных значений, который вводится с помощью операторов присваивания... а потом зная i - кол-во часов и j - кол-во минут написать res=arr[i][j] |
Сообщ.
#3
,
|
|
|
В том то и дело, что массивы тоже нельзя .
Здесь я так думаю должны использоваться одни div'ы и mod'ы . |
Сообщ.
#4
,
|
|
|
(раздраженно) нет бы сразу сказать, что можно, а что нельзя...
а то сиди гадай тут.. массивы оказывается нельзя, а / и \% (div и mod) можно.... а + и - можно? |
Сообщ.
#5
,
|
|
|
<br>mins:=m*60+n;<br>dmin:=12*60/11;<br>minsmatch:=trunc(dmin*trunc((mins+dmin)/dmin)-mins);<br>dmin:=dmin/2;<br>minsperp:=trunc(dmin*round((mins+dmin)/dmin)-mins);<br> По-моему так. |
Сообщ.
#6
,
|
|
|
Спрашивали когда-то на паскалевском форуме...
Var<br> h, m: Integer;<br> Hpos, Mpos, Msovp, Mint: Real;<br><br>Begin<br> Write('Введите Часы Минуты: ');<br> ReadLn(h, m);<br> h := h mod 12;<br> Hpos := h + m/60;<br> Mpos := m/5;<br> If Mpos < Hpos then<br> Begin<br> Msovp := h*60/11;<br> Mint := Msovp - m<br> End<br> else If Mpos > Hpos then<br> Begin<br> h := (h + 1) mod 12;<br> Msovp := h*60/11;<br> Mint := 60 + Msovp - m<br> End;<br> WriteLn('Совпадут через ', Trunc(Mint), ' минут ', Trunc(Frac(Mint)*60), ' секунд')<br>End. Про перпендикуляр потом (если не забуду), сейчас некогда. |