| 
| 
 | Вопрос # 2 671/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Подскажите, пожалуйста, как организовать такой цикл:
 Надо выполнять следующие этапы в течение 400 часов:
 1.	вынуть деталь (12+3 мин.);
 2.	установить ее в полировочной машине (10+4 мин.);
 3.	фаза 1-ая полирования (80+20 мин.);
 4.	поворот детали для продолжения полирования (15+7 мин.);
 5.	фаза 2-ая полирования (110+30 мин.);
 6.	достать отполированную деталь из машины (10+4 мин.);
 7.	установить деталь в прежнее место (12+3 мин.).
 Приложение:Переключить в обычный режим  function Norm:real;var i:integer;    S:real;beginS:=0;for i:=1 to 12 doS:=S+Random;Norm:=S-6;end; 
|  |   Вопрос задала: Anya (статус: Посетитель)Вопрос отправлен: 22 апреля 2009, 13:16
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Anya!первым долгом напишем функцию, которая будет выдавать нам время.
 
 function GetRandTime(mi:integer):integer;
  var i:integer;
begin
  i := random(mi);
  if random > 0.5 then result := i else result := -i;
end;Можно было конечно и через удвоение пойти, но я решил так. Если функция распределения тут плохая - можно подставить нужную. теперь сам процесс.
 
 var sumtime, repcount:integer;
begin
  sumtime := 0;
  repcount := 0;
  repeat
    sumtime := sumtime + 12 + GetRandTime(3);
    sumtime := sumtime + 10 + GetRandTime(4);
    sumtime := sumtime + 80 + GetRandTime(20);
    sumtime := sumtime + 15 + GetRandTime(7);
    sumtime := sumtime + 110 + GetRandTime(30);
    sumtime := sumtime + 10 + GetRandTime(4);
    sumtime := sumtime + 12 + GetRandTime(3);
    repcount:= repcount + 1;
  until sumtime> 400*60;
  //repcount - количество повторов
  //sumtime - реально потраченное время.Конечно, в теле цикла можно сделать сокращения до sumtime := sumtime + 249 + GetRandTime(71);
 Мне почему то кажеться, что пункты 1 и 7 не надо выполнять в цикле, а за пределами, а может и 2 и 6. Но я не специались в обработке металов.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 22 апреля 2009, 18:11
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 22 апреля 2009, 20:01; участников в обсуждении: 5. 
|   | min@y™ (статус: Доктор наук), 22 апреля 2009, 13:33 [#1]: Цитата: (12+3 мин.); Как это понимать?
 Может быть это (12±3 мин.);, а?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Косолапов Дмитрий Юрьевич (статус: 8-ой класс), 22 апреля 2009, 16:29 [#2]:Вообще, конечно, видится некая реакция на события... Хотя, с другой стороны, можно, конечно и цикл, который как раз опрашивает состояния каждого этапа, замеряет время, которое занял этап, и т.д. Непонятный вопрос, если честно. |  
|   | Вадим К (статус: Академик), 22 апреля 2009, 16:42 [#3]:У меня есть некоторые соображения, как это реализовать, но я жду ответа вопрошающего по поводу значения 12+3 мин. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Anya (статус: Посетитель), 22 апреля 2009, 17:41 [#4]:Да, имелось ввиду 12±3 мин.,10±4 мин. и т. д. |  
|   | Anya (статус: Посетитель), 22 апреля 2009, 19:31 [#5]:Вадим К, большое спасибо за программу. |  
|   | Dron (статус: Студент), 22 апреля 2009, 19:43 [#6]:Вадим, я думаю, что +/- N минут вовсе не означает строго +N или -N - значение скорее всего лежит в этом диапазоне. Ну я думаю, Аня сможет внести соответствующие изменения самостоятельно   С уважением. |  
|   | Вадим К (статус: Академик), 22 апреля 2009, 19:51 [#7]:to Dron. А рандом там видели? всё там впорядке.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Dron (статус: Студент), 22 апреля 2009, 20:01 [#8]:Ой, точно, невнимательно посмотрел. Только тогда
 
 i := random(mi+1); С уважением. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |