Расчет уличного освещения, страница 2

·  i, j (целые числа), lampt (тип lamp) - временные переменные.

Для нахождения максимального расстояния между светильниками необходимо ввести значения fl, enom, kz, a, h. Должны быть введены данные в массив edhs.

Для подбора лампы необходимо ввести значения enom, a, h, l. Должны быть введены данные в массивы edhs, lamps.


Порядок решения задачи

При нахождении максимального расстояния между светильниками необходим следующий порядок операций:

1.  Расчет относительной освещенности:
e=1000*enom*kz*h2/(2*fl);

2.  Нахождение соотношения d/h;

3.  Нахождение d по известному соотношению d/h и h;

4.  Проверка выполнение условия d<=a;

5.  Нахождение l по формуле:  .

При подборе лампы необходим следующий порядок операций:

1.  Нахождение d по известным l и a: ;

2.  Нахождение e по известному отношению d/h;

3.  Расчет необходимого потока: fl=1000*enom*kz*h2/(2*e);

4.  Сортировка ламп по возрастанию мощности;

5.  Нахождение лампы дающей необходимый поток при наименьшей мощности.


Описание алгоритма

В начале выполнения  алгоритма необходимо ввести  значение переменной atc. Переменная atc определяет задачу решаемую алгоритмом. Если act=1, алгоритм определяет максимальное расстояние между светильниками. Если act=2 – производит подбор лампы.

Если введено act=1:

1.  Расчет относительной освещенности:
e=1000*enom*kz*h2/(2*fl).

2.  Нахождение соотношения d/h. Присваиваем переменной i значение edhc. Уменьшаем значение i до тех пор, пока не перестанет выполнятся одно из условий edhs[i].e<e или i>1. Невыполнение условия edhs[i].e<e говорит о нахождении необходимого значения освещенности.

3.  Нахождение d по известному соотношению d/h и h.

4.  Проверка выполнение условия d<=a. Если условие выполняется, вывод сообщения о невозможности расчета l. Завершение выполнения. Если не выполняется – переходим к нахождению l.

5.  Нахождение l по формуле:  . После нахождения l вывод значения и завершение работы.

Если act=2:

1.  Нахождение d по известным l и a: ;

2.  Нахождение e по известному отношению d/h. Присваиваем переменной i значение 1. Увеличиваем значение i до тех пор, пока не перестает выполнятся одно из условий edhs[i].dh<dh или i<edhc.

3.  Расчет необходимого потока: fl=1000*enom*kz*h2/(2*e).

4.  Сортировка ламп по возрастанию мощности. Переменной i присваивается  значение 1. Переменной j значение i+1. Если выполняется условие lamps[i].p>lamps[j].p, меняем lamps[i] и lamps[j] местами. Увеличиваем значение j на 1, пока оно не достигнет edhc. Если j достигло значения edhc, увеличиваем значение i на 1, возвращаемся к присвоению  j значения i+1, и т.д. пока i не больше edhc-1. Таким образом, при увеличении i на 1, вложенный цикл по переменной j проходит от i+1 до edhc. Значение поля p i-го элемента сравнивается со значением p всех элементов после i-го. i-й элемент обменивается своим значением с элементом, поле p которого имеет меньшее значение. В результате, когда значение j достигает edhc, i-ый элемент получает значение с минимальным полем p. i увеличивается и вновь получает минимальное значение из оставшихся элементов. В начале массива до элемента i располагаются элементы, отсортированные по возрастанию значения поля p.

5.  Нахождение лампы дающей необходимый поток при наименьшей мощности. Увеличиваем значение i от 1 пока выполняются условия lamps[i].fl<fl и i<lampsc. Далее проверяем  выполнение lamps[i].fl>=fl. Если выполняется, выводим название лампы, характеристики которой хранятся в lamps[i] (поскольку элементы отсортированы по возрастанию мощности, найденный элемент будет иметь минимальную мощность). Если нет – значит в массиве не оказалось лампы, подходящей по потоку. Вывод сообщения о невозможности подбора лампы.