Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 мин.).

Приложение:
  1.  
  2. function Norm:real;
  3. var i:integer;
  4. S:real;
  5. begin
  6. S:=0;
  7. for i:=1 to 12 do
  8. S:=S+Random;
  9. Norm:=S-6;
  10. end;
  11.  


Anya Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: 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™

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

Anya (статус: Посетитель), 22 апреля 2009, 17:41 [#4]:

Да, имелось ввиду 12±3 мин.,10±4 мин. и т. д.
Anya

Anya (статус: Посетитель), 22 апреля 2009, 19:31 [#5]:

Вадим К, большое спасибо за программу.
Dron

Dron (статус: Студент), 22 апреля 2009, 19:43 [#6]:

Вадим, я думаю, что +/- N минут вовсе не означает строго +N или -N - значение скорее всего лежит в этом диапазоне. Ну я думаю, Аня сможет внести соответствующие изменения самостоятельно :-)
С уважением.
Вадим К

Вадим К (статус: Академик), 22 апреля 2009, 19:51 [#7]:

to Dron.
А рандом там видели? всё там впорядке.
Галочка "подтверждения прочтения" - вселенское зло.
Dron

Dron (статус: Студент), 22 апреля 2009, 20:01 [#8]:

Ой, точно, невнимательно посмотрел.
Только тогда
i := random(mi+1);
С уважением.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 20 февраля 2020, 10:50
Выполнено за 0.03 сек.
Рейтинг@Mail.ru