|
Вопрос # 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;
- begin
- S:=0;
- for i:=1 to 12 do
- S:=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);
С уважением.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|