Dobrý den, mohla bych poprosit o pomoc s tímto programem? Vychází mi nejmenší osvětlení místnosti i na stole stejně, nevíte, kde mám prosím chybu? Mockrát děkuju
program osvetleni_priklad;
uses crt;
const
delka=12; //delka mistnosti v metrech
sirka=8; //sirka mistnosti v metrech
ctverec=0.1; //delka strany elementarni plochy v metrech
mx=round(delka/ctverec)-1; //maximalni pocer elementarnich ploch
my=round(sirka/ctverec)-1;
rx=4; //roztec mezi svitidly v metrech
ry=2; //vzdalenost mezi jednotlivymi radami v metrech
vx=2; //vzdálenost 1. svitidla od steny ve smeru osy x v metrech
vy=2; //vzdalenost 1. svitidla od steny ve smeru osy y v metrech
vs=3; //vzdálenost svetel od zeme v metrech
vstul=0.72; //vyska stolu
vs2=vs*vs; //kvadrat vzdalenosti svetla od zeme
vstul2=(vs-vstul)*(vs-vstul); //kvadtat vzdalenosti stolu od zeme
SvTok=2080; //minimalni svetelny tok zarovky o vykonu 200 W v lumenech lm
minOsv=400; //minimalni pripustne osvetleni mistnosti v luxech lx
minOsvs=500; //minimalni pripustne osvetleni stolu pri cteni/psani v luxech lx
var
Mistnost : array[0..mx,0..my] of real; //mistnost reprezentovana matici realnych cisel
Stul : array[0..mx,0..my] of real;
xs,ys,xss,yss : real; //souradnice svitidla
i,j,c,k,l,m : integer;
function na2(r : real) : real;
begin
na2:=r*r //funkce vytvoří kvadrát
end;
begin
writeln;
textbackground(white);
textcolor(red);
writeln('----------------------------------------------------------------------------');
writeln('----------------------------------------------------------------------------'); //zadni ulohy
writeln('Program pocita hodnotu maximalniho, minimalniho osvetleni a procentualni ');
writeln('podil nedosvetlenych ploch mistnosti o rozmerech 12x8 metru, ktera je ');
writeln('osvetlena svitidly ve trech radach po trech. Roztec mezi svitidly je 4 m, ');
writeln('vzdalenost mezi jednotlivymi radami je 2 metry, krajni svetlo je od obou ');
writeln('sten vzdaleno 2 metry a od zeme 3 metry. V kazdem svitidle je zarovka ');
writeln('o vykonu 200 W (minimalni svetelny tok teto zarovky je 2080 lumenu). ');
writeln('Minimalni pripustne osvetleni teto mistnosti je 400 luxu. ');
writeln('----------------------------------------------------------------------------');
writeln('----------------------------------------------------------------------------');
writeln;
writeln('----------------------------------------------------------------------------'); //zadni ulohy rozsirujici ulohy
writeln('Rozsireni ulohy - vypocet intenzity osvetleni na stole o vysce 72 cm. ');
writeln('----------------------------------------------------------------------------');
textbackground(black);
writeln;
writeln;
FillChar(Mistnost,SizeOf(Mistnost),0); //naplneni matice nulami
ys:=vy; //souradnici svitidla se priradi vzdalenost 1. svitidla od steny ve smeru osy y
repeat //zacatek cyklu
xs:=vx; //souradnici svitidla se priradi vzdalenost 1. svitidla od steny ve smeru osy x
repeat //zacatek vnoreneho
for i:=0 to mx do //pruchod radky matice
for j:=0 to my do //pruchod slouci matice
Mistnost[i,j]:=Mistnost[i,j]+SvTok/(vs2+na2(xs-i*Ctverec-Ctverec/2)+na2(ys-j*Ctverec-Ctverec/2)); //vynulovane matice reprezentující mistnost - se plni elementy E_(i,j) dle vzorce (3)
xs:=xs+Rx; //k x-ove souradnici svitidla se pricte rozptyl mezi svitidly
until xs>=Delka; //vnoreny cyklus probiha dokud je x-ova souradnice nedosahne delky mistnosti
ys:=ys+Ry; //k y-ove souradnici svitidla se pricte rozptyl mezi svitidly
until ys>=Sirka; //cyklus probiha dokud y-ova souradnice nedosahne sirky mistnosti
c:=0; //vynulovani c (elementární plocha)
for i:=0 to mx do //pruchod radky matice
for j:=0 to my do begin //pruchod slouci matice
if Mistnost[i,j] > xs then xs:=Mistnost[i,j]; //porovnani hodnoty pole na i,j-tem miste se souradnicemi svitidla
if Mistnost[i,j] < ys then ys:=Mistnost[i,j];
if Mistnost[i,j] < MinOsv then Inc(c); //pokud je hodnota na i,j-te pozici mensi nez minimalni osvetleni, pricte se k c jednicka
end;
FillChar(Stul,SizeOf(Stul),0);
yss:=vy;
repeat
xss:=vx;
repeat
for k:=0 to mx do
for l:=0 to my do
Stul[k,l]:=Stul[k,l]+SvTok/(Vstul2+na2(xss-k*Ctverec-Ctverec/2)+na2(yss-l*Ctverec-Ctverec/2));
xss:=xss+Rx;
until xss>=Delka;
yss:=yss+Ry;
until yss>=Sirka;
m:=0;
for k:=0 to mx do
for l:=0 to my do begin
if Mistnost[k,l] > xss then xss:=Stul[k,l];
if Mistnost[k,l] < yss then yss:=Stul[k,l];
if Mistnost[k,l] < MinOsvs then Inc(m);
end;
textcolor(yellow);
writeln('VYSLEDKY VYSLEDKY - osvetleni na stole');
writeln; //vypsani vysledku
writeln('Nejvetsi osvetleni: ',xs:15:3,' lx',xss:14:3,' lx');
writeln('Nejmensi osvetleni: ',ys:12:3,' lx',yss:11:3,' lx');
writeln('Nedosvetleno: ',100*c/((mx+1)*(my+1)):15:3,' %',100*m/((mx+1)*(my+1)):12:3,' %'); //c pocet nedosvetlenych elementu
readln;
end.