Рассмотрим решение задачи нахождения максимального расстояния между светильниками.
Возьмем следующие данные: fl=5600, enom=0.5, kz=1.5, a=10, h=8.
Получим e=4.286.
При значении i=29 перестанет выполнятся условие edhs[i].e<e. edhs[29].e=4.951.
Найдем значение d. edhs[i].dh=1.818; d=14.554.
Условие d<=a не выполняется.
Рассчитав l, получили значение 21.12 м.
Рассмотрим решение задачи подбора лампы.
Возьмем следующие данные: enom=0.5, kz=1.5, a=10, h=8, l=21.
Получим d=14,5; d/h=1.8125
При значении i=29 перестанет выполнятся условие edhs[i].dh<dh. Получили: edhs[29].dh=1.818. edhs[29].e=9.902.
Рассчитав fl, получим значение 4848.
Отсортируем массив lamps по возрастанию мощности ламп.
При значении i=3 выполняется условие edhs[i].fl<fl. edhs[i].fl=5600.
Выбрана лампа ДРЛ-125.
1. Алгоритм разработан для расчета одного ряда светильников.
2. При решении задачи нахождения максимального расстояния между светильниками алгоритм не сможет найти расстояние если будет выполнятся условие d<a.
3. При подборе лампы алгоритм не найдет решения если ни одна из ламп не сможет обеспечить необходимый поток.
4. Расчет ведется только для светильников СВ и СВР.
5. Подбор ламп осуществляется из ограниченного числа ЛН и ДРЛ.
6. Зависимость e=f(d/h) задана для 32-х точек.
program ligth;
type lamp=record
name:string; {name - название лампы}
fl:real; {fl - поток лампы}
p:integer; {p - мощность лампы}
end;
edh=record
e:real; {относительная освещенность}
dh:real; {отношение d/h}
end;
const edhc=32; {количество точек, снятых с графика e=f(d/h)}
lampsc=13;
var e,enom,kz,fl,a,d,l,h:real;
{e - относительная освещенность;
enom - освещенность дорожного полотна;
kz - коэффициэнт запаса;
fl - поток;
a - расстояние от оси опор до точек с минимальной освещенностью;
d - расстояние от опоры до точки с минимальной освещенностью;
l - расстояние между опорами;
h - высота опоры}
lamps:array[1..lampsc] of lamp;
edhs:array[1..edhc] of edh;
f:text;
s,s1,s2:string; {\временные }
i,j,t,t1,act:word; {/переменные}
lampt:lamp;
procedure vvod;
begin
assign(f,'edh.txt');
reset(f);
for i:=1 to edhc do begin
readln(f,s); {чтение строки из файла}
j:=0;
while s[j]<>';' do inc(j); {определение позиции ";" в строке}
s1:=copy(s,0,j-1); {то, что до ";" копируем в строку s1}
val(s1,t,t1); {преобразуем в числовой формат}
edhs[i].dh:=t/1000;
s1:=copy(s,j+1,length(s)-j); {то, что после ";" в s2}
val(s1,t,t1);
edhs[i].e:=t/1000;
end;
close(f);
assign(f,'lamps.txt');
reset(f);
for i:=1 to lampsc do begin
readln(f,s); {чтение строки из файла}
j:=0;
while s[j]<>';' do inc(j); {определение позиции ";" в строке}
s1:=copy(s,0,j-1); {то, что до ";" копируем в строку s1}
val(s1,t,t1);
lamps[i].p:=t;
t:=j;
inc(j);
while s[j]<>';' do inc(j);
s1:=copy(s,t+1,j-t-1);
val(s1,t,t1);
lamps[i].fl:=t;
lamps[i].name:=copy(s,j+1,length(s)-j);
end;
case act of
1: begin
write('Введите поток (лм): '); { }
readln(fl); { }
write('Введите освещенность дороги (лк): '); { ВВОД }
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.