Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2012, 19:26   #21
MasterMaind
Новичок
Джуниор
 
Аватар для MasterMaind
 
Регистрация: 21.10.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Код:
uses
  crt;
 
var
  h, m, i, d: integer;

 
begin
  for i := 0 to 720 do
  begin
    h := i div 60;
    m := i mod 60;
    
    d := i - 12 * (i mod 60) + 180;
    while d > 360 do
        dec(d, 360);
    while d < 0 do
        inc(d, 360);   
    writeln(h, 'h ', m, 'm : ', d / 11:0:4)
  end;
  readln;
end.
Нашел ошибку (не учитывал кое-что при расчете градусов часовой стрелки).

Посмотрите, осталась ли ошибка, т.к. я пока не понял, где она.

На ваш код в 2008 студии компилятор ругается...пока не могу найти на что.
Per aspera ad astra!
MasterMaind вне форума Ответить с цитированием
Старый 22.10.2012, 19:29   #22
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

MasterMaind, во-первых, есть кнопочка Правка, чтобы не плодить сообщения.
Во-вторых, это не последний вариант
В-третьих, что за 2008 студия, какой компилятор?
В-четвертых, какие косяки в подсчете?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.10.2012, 19:35   #23
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Давайте не будем сейчас...суть не в этом.
ok
Цитата:
Определение угла между стрелками часов
Даны целые числа H и M (0 < H <= 12 , 0 <= M <= 60), указывающие момент времени : "H часов M минут" Определить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки расположатся перпендикулярно друг другу.

Прежде всего убедимся, что если решать задачу в целых числах, то искомых моментов времени всего два 3:00 и 9:00.
Код:
const eps = 0.00001;
var h,m,s,hs,i,k:byte;
function rightAngle(h,m,s,hs:byte):boolean;
var a,r:real;
  begin
  a:=pi/6*(h-11*m/60-11*s/(300*12)-11*hs/(300*12*100));
  r:=cos(a);
  rightAngle:=(abs(r)<eps);
  if (abs(r)<eps) then
    write('a=',180*a/pi:16:9,' ');
  end;
begin
writeln;
for h:=0 to 11 do
for m:=0 to 59 do
for s:=0 to 59 do
for hs:=0 to 99 do
  if (rightAngle(h,m,s,hs))
    then writeln(h:2,':',m:2,':',s:2,':',hs:2,' ugol pryamoy');
end.
Цитата:
Angle HH:MM:SS:HS
------------- -----------
-90.000166667 0:16:21:82
-269.999583330 0:49:05:45
-270.000500000 0:49:05:46
-89.999916667 1:21:49:09
-270.000250000 1:54:32:73
-89.999666667 2:27:16:36
90.000000000 3:00:00:00
-90.000333333 3:32:43:64
90.000250000 4:05:27:27
-90.000083334 4:38:10:91
90.000500000 5:10:54:54
89.999583333 5:10:54:55
-89.999833333 5:43:38:18
89.999833333 6:16:21:82
-89.999583334 6:49:05:45
-90.000500000 6:49:05:46
90.000083334 7:21:49:09
-90.000250000 7:54:32:73
90.000333333 8:27:16:36
270.000000000 9:00:00:00
89.999666667 9:32:43:64
270.000250000 10:05:27:27
89.999916667 10:38:10:91
270.000500000 11:10:54:54
269.999583330 11:10:54:55
90.000166667 11:43:38:18
А дальше уже просто:
Код:
tm = h*60+m; { число минут до заданного момента }
if tm <=180 { если заданное время до 3:00 включительно }
  then p:=180-tm
else if (tm <= 540) { время с 3:01 до 9:00 включительно }
  them p:=560-tm
else { время после 9:01 включительно }
  p:=720-tm+180 { суммируем время до полуночи и 3 часа до 3:00}
writeln('число полных минут: ',p);
источник
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 22.10.2012, 19:46   #24
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Mad_Cat, интересный пример.
По их логике получается, что если сейчас 0 часов 0 минут, то нужно 180 минут
Или я их не так понял?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.10.2012, 19:52   #25
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

именно так) так и есть же) если решать в целых числах и угол брать точно
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 23.10.2012, 17:19   #26
MasterMaind
Новичок
Джуниор
 
Аватар для MasterMaind
 
Регистрация: 21.10.2012
Сообщений: 8
По умолчанию

Друзья мои это мнение ошибочно....я про 180 градусов
Per aspera ad astra!
MasterMaind вне форума Ответить с цитированием
Старый 23.10.2012, 20:09   #27
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

MasterMaind, ну, во-первых, не 180 градусов, а 180 минут. В-вторых, смысл, в той программе есть, т.к. в ней ищутся только целые ответы.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Серьезная ошибка при открытии исходника! artemavd Общие вопросы Delphi 21 19.03.2013 12:45
webmaney-серьезная ошибка! viks1 Софт 7 18.11.2011 22:00
серьезная проблема алексей-ячс Безопасность, Шифрование 24 23.10.2011 19:35
Серьезная проблема. Marat1993 Помощь студентам 2 24.01.2011 06:10
Серьезная проблема с округлением asale Microsoft Office Excel 0 03.02.2009 18:25