Příklad v pascalu – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Příklad v pascalu – Pascal – Fórum – Programujte.comPříklad v pascalu – Pascal – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené.
Lolo240
Newbie
8. 5. 2017   #1
-
0
-

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

Připojen obrázek.

Připojen obrázek.

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.

Nahlásit jako SPAM
IP: 88.102.95.–
MilanL+1
Grafoman
9. 5. 2017   #2
-
0
-

#12 MilanL
ahoj, neměla bys mít v druhé části výpočtů pro stůl ve smyčkách počítajících sumu v podmínce také bloky stolu?

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,

Nahlásit jako SPAM
IP: 185.112.167.–
peter
~ Anonymní uživatel
3981 příspěvků
9. 5. 2017   #3
-
0
-

Mistnost je 1200x800 ctverecku (dm^2, 12x8 m^2)
Prvni svetlo je 2x2 od sten a 3 vyska.
S = 2080
d*d = v*v + l*l, pod svetlem je l=0, v=30 (3m = 30 dm)
l[20,20] = 0
d*d[20,20] = v*v + l*l = 30*30 + 0 = 900
E[20,20] = S / (d*d) = 2080 / 900 = 2,31 (ale asi je to treba prepocitat spis z dm na m)
l[10,10] = 10
d*d[10,10] = v*v + l*l = 30*30 + 10*10 = 1000
E[10,10] = S / (d*d) = 2080 / 1000 = 2,08
l[0,0] = 20
d*d[0,0] = v*v + l*l = 30*30 + 20*20 = 1300
E[0,0] = S / (d*d) = 2080 / 1300 = 1,6 - roh mistnosti, k tomu...
Dalsi zarovka je o 2 metry dal
d*d[-20,-20] = v*v + l*l = 30*30 + 40*40 = 2100
E[-20,-20] = S / (d*d) = 2080 / 2100 = asi 1
Dalsi dalsi 4m
d*d[-40,-40] = v*v + l*l = 30*30 + 60*60 = 4500
E[-40,-40] = S / (d*d) = 2080 / 4500 = asi 0,5
Dalsi zarovka je z druhe rady, 4m mezi radami a 2m od steny, cili d = odm (4*4 + 2*2) = odm(20) = 4,47
d*d = v*v + l*l = 30*30 + 2000 [odm(20)*10)^2] = 2900
E = S / (d*d) = 2080 / 2900 = asi 0,7
Dalsi nebudu pocitat, odhadnu prispevek ostatnich svetel na rekneme max 1. Takze vodorovne se svetly je svitivost suma:
e = e[0,0] + e[-20,20] + e[-40,-40] + e[-45,-45] + 1 = 1,6 + 1 + 0,5 + 0,7 + 1 = 5,8

V rohu mistnosti tipnu, ze bude o 1 mene, 4,8. Prepocitano s nulami 580, 480. Tobe vychazi 8000, to je docela slusne.

Venku na slunci je kolem 100.000, v mistnosti u okna byva kolem 5.000, zarivky daji obvykle 2.000. Proste mas hodne dobra bodova svetla :)
 

Nahlásit jako SPAM
IP: 2001:718:2601:26c:f534:36...–
peter
~ Anonymní uživatel
3981 příspěvků
9. 5. 2017   #4
-
0
-

Jo, v tech hranatych zavorkach to mam blbe, a tu poznamku o rohu, je mysleno vodorovne se svetelnou radou
[20,20] [10,20] [0,20] [-20,20] [-40,20] a to posledni nemelo byt e[-45,-45], ale [0,20] pro svetlo druhe rady
 

B . . . . . . . .
. . . . . . . . .
A . x . . y . . z
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . u . . v . . w

Jakoze se vsechno vztahuje k bodu A ze zdroju x,y,z,u. v,w a ostatni odhaduji na prispevek max +1. Posun do rohu odhaduji ztratu max -1.

Nahlásit jako SPAM
IP: 2001:718:2601:26c:f534:36...–
peter
~ Anonymní uživatel
3981 příspěvků
9. 5. 2017   #5
-
0
-

Jo a tu vzdalenost pocitam tez priblizne, ne pres stred plochy, jak by se melo, ale ty hodnoty se moc lisit nebudou. Spis jsem to chtel jen tak pro informaci, ze to skutecne klesa se vzdalenosti a kdo vi, co tam pocitas :)

A kdyz das do rohu stul 1 metr od zeme, tak se to zmeni na
d*d = v*v + l*l, pod svetlem je l=0, v=30 (3m = 30 dm)
l[20,20] = 0
d*d[20,20] = v*v + l*l = 20*20 + 0 = 400
E[20,20] = S / (d*d) = 2080 / 400 = 5...
Cili zhruba dvojnasobek nejspis pro vsechna cisla, cili kolem 1000

Nahlásit jako SPAM
IP: 2001:718:2601:26c:f534:36...–
MilanL+1
Grafoman
9. 5. 2017   #6
-
0
-

#3 peter
dle nastavených konstant všechny ty vstupní hodnoty v metrech.

Měla problém s tím, že jí to ukazuje u minima stejné hodnoty.

Nahlásit jako SPAM
IP: 91.139.9.–
MilanL+1
Grafoman
9. 5. 2017   #7
-
0
-

#3 peter
Mistnost je 1200x800 ctverecku (dm^2, 12x8 m^2)

Asi trošku chyba ne? spletl sis dm s cm, při rozdělení po dm^2 je místnost 12x8 m => 120x80 dm.

Nahlásit jako SPAM
IP: 91.139.9.–
Lolo240
Newbie
9. 5. 2017   #8
-
0
-

Moc moc děkuju za příspěvky. Program konkrétní program už funguje, pak jsem ho převedla na dynamické pole (viz níže) a ještě prosím, jak mám zapsat výsledek, aby byly desetinné tečky pod sebou? V jednom programu jsem to dělala s balíčkem Graph, ale tady mi to pak hlásí výjimku. Děkuju

program obecny_priklad;
uses crt;

const
  ctverec=0.1;                                                                                  //delka strany elementarni plochy v metrech


  var
    xs,ys,xss,yss,delka,sirka,ry,rx,vx,vy,SvTok,vstul,minOsv,minOsvs,vs,vs2,vstul2 : real;       //souradnice svitidla
    i,j,c,k,l,m : integer;

    Mistnost, Stul: array of array of real; 		                                         //Deklarace dynamickych poli, deklaruji pole poli realnych cisel
    mx, my: 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 urcitych rozmerech, ktera je         ');
writeln('osvetlena nekolika usporadanymi svitidly v radach. K vypoctu je nutne zadat ');
writeln('roztec mezi svitidly, vzdalenost mezi jednotlivymi radami, vzdalenost       ');
writeln('svitidla od zeme, vzdalenosti krajniho svitidla od obou sten, svetelny tok  ');
writeln('zarovky a minimalni pripustne osvetleni teto mistnosti.                     ');
writeln('----------------------------------------------------------------------------');
writeln('----------------------------------------------------------------------------');
writeln;
writeln('----------------------------------------------------------------------------');            //zadni ulohy rozsirujici ulohy
writeln('Rozsireni ulohy - vypocet intenzity osvetleni na stole o zadane vysce.      ');
writeln('----------------------------------------------------------------------------');
textbackground(black);
writeln;
writeln;

textcolor(green);
textbackground(white);
writeln('Zadejte:');
writeln;

textcolor(white);
textbackground(black);
write('Delku mistnosti v metrech y:                                      ');
read(delka);
writeln;
write('Sirku mistnosti v metrech x:                                      ');
read(sirka);
writeln;
write('Roztec mezi svitidly v metrech - ve smeru delky y:                ');
read(rx);
           if rx >= delka then begin
           textbackground(red);
           writeln('Prilis velka roztec mezi svetly!!');
           end
           else
           begin
writeln;
write('Vzdalenost mezi jednotlivymi radami v metrech - ve smeru delky x: ');
read(ry);
           if ry >= sirka then begin
           textbackground(red);
           writeln('Prilis velka vzdalenost mezi jednotlivymi radami!!');
           end
           else
           begin
writeln;
write('Vzdalenost 1. svitidla od steny ve smeru osy x v metrech:         ');
read(vx);
           if vx >= sirka then begin
           textbackground(red);
           writeln('Prilis velka vzdalenost od steny!!');
           end
           else
           begin
writeln;
write('Vzdalenost 1. svitidla od steny ve smeru osy y v metrech:         ');
read(vy);
           if vy >= delka then begin
           textbackground(red);
           writeln('Prilis velka vzdalenost od steny!!');
           end
           else
           begin
writeln;
write('Vzdalenost svetel od zeme v metrech:                              ');
read(vs);
writeln;
write('Minimalni svetelny tok zarovky v lumenech (lm):                   ');
read(SvTok);
writeln;
write('Minimalni pripustne osvetleni mistnosti v luxech:                 ');
read(minOsv);
writeln;
write('Vyska stolu v metrech:                                            ');
readln(vstul);
                if vstul >= vs then begin
                textbackground(red);
                writeln('Stul je prilis vysoky!!');
                end
                else
                begin
writeln;
write('Minimalni pripustne osvetleni na stole v luxech:                  ');
readln(minOsvs);
writeln;

vs2:=vs*vs;                    //kvadrat vzdalenosti svetla od zeme
vstul2:=(vs-vstul)*(vs-vstul);  //kvadtat vzdalenosti stolu od zeme

  mx := round(delka/ctverec-1);    //vypocet delek pro jednotlive rozmery pole
  my := round(sirka/ctverec-1);

  SetLength(Mistnost, mx + 1, my + 1);  //Nastavi delku - jako pro deklaraci pole, bere delku pole ne 0 .. mx
  SetLength(Stul, mx + 1, my + 1);

                  end;
                  end;
                  end;
                  end;
                  end;


  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)
  xs:=0;
  ys:=2000;
  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;

  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;
  xss:=0;
  yss:=2000;
  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;


  writeln;
  textcolor(yellow);
  writeln('_____________________________________________________________________________________');
  writeln('VYSLEDKY                                    VYSLEDKY - osvetleni na stole');
  writeln('_____________________________________________________________________________________');
  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
   writeln('_____________________________________________________________________________________');



readln;

end.
Nahlásit jako SPAM
IP: 88.102.95.–
gna
~ Anonymní uživatel
1850 příspěvků
9. 5. 2017   #9
-
+1
-
Zajímavé

jak mám zapsat výsledek, aby byly desetinné tečky pod sebou?

Zarovnání těch hodnot určují ta čísla za nimi

xs:15:3
ys:12:3
Nahlásit jako SPAM
IP: 213.211.51.–
Lolo240
Newbie
9. 5. 2017   #10
-
0
-

Moc děkuju a ještě poslední dotaz, potřebovala bych vykreslit oba grafy, buď za sebou, nebo že se po stisknutí klávesy objeví druhý. Jak to mám prosím propojit?

Když smažu
readln; clrscr; readkey;
tak se vysledky překrývají a graf přeblikne po chvíli.

Když tam tyto příkazy jsou, tak to druhou část nepřečte.

Mockrát děkuju

program project1;
uses Graph,crt;

const
  delka=12;
  sirka=8;
  ctverec=0.1;
  mx=round(Delka/Ctverec)-1;
  my=round(Sirka/Ctverec)-1;
  Rx=4;
  Ry=2;
  Vx=2;
  Vy=2;
  Vs=3;
  vstul=0.72;
  Vs2=Vs*Vs;
  vstul2=(vs-vstul)*(vs-vstul);
  SvTok=2080;
  MinOsv=400;
  minOsvs=500;

  var
    Mistnost : array[0..mx,0..my] of real;
    Stul : array[0..mx,0..my] of real;
    xs,ys,xss,yss : real;
    c,c1,c2,m,m1,m2 : integer;
    i,j,k,l : smallint;
    function na2(r : real) : real;
    begin
      na2:= r*r
    end;
function CdoR(r:real;m,d : integer) : string;      //prevod zadaneho realneho cisla r do retezcove podoby
var s : string;
  begin                                            //m - celkova velikost vysledneho retezce (ve znacich)
    Str(r:m:d,s);                                  //d - pocet desetinnych mist
    CdoR:=s;                                       //pokud je retezec kratsi nez m doplnuje se mezerami
    end;

begin

  ys:=Vy;
  repeat
    xs:=Vx;
    repeat
      for i:=0 to mx do
      for j:=0 to my do
      Mistnost[i,j]:=Mistnost[i,j]+(SvTok/(Vs2+na2(xs-i*Ctverec-Ctverec/2)+na2(ys-j*Ctverec-Ctverec/2)));
      xs:=xs+Rx;
    until xs >= Delka;
    ys:= ys+Ry;
  until ys >= Sirka;
  xs:=0;
  ys:=2000;
  c:=0;
  for i:=0 to mx do
  for j:=0 to my do begin
    if Mistnost[i,j] > xs then xs:=Mistnost[i,j];
    if Mistnost[i,j] < ys then ys:=Mistnost[i,j];
    if Mistnost[i,j] < MinOsv then Inc(c);
    end;

  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;
    xss:=0;
    yss:=2000;
    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;


detectGraph(i,j); InitGraph(i,j,'');                               //urceni, jaky graficky driver se ma pouzit, prepnuti do grafickeho rezimu
OutTextXY(0,12,'Nejvetsi osvetleni mistnosti: '+CdoR(xs,7,2)+' lx');         //zarovnání vysledku, aby byly desetinne tecky pod sebou
OutTextXY(0,24,'Nejmensi osvetleni mistnosti: '+CdoR(ys,7,2)+' ln');
OutTextXY(0,36,'Nedosvetleno v mistnosti: '+CdoR(c/((mx+1)*(my+1))*100,11,2)+' %');



c1:=100;
for j:=0 to my do begin
  c:=0;
  for i:=0 to mx do begin
    c2:=trunc(Mistnost[i,j]/xs*15);                                //prevod na celociselny typ
    PutPixel(c,c1,c2); PutPixel(c+1,c1,c2); Inc(c,2);              //vykreslení bodu
    end;
  c:=0;
  for i:=0 to mx do begin
    c2:=trunc(Mistnost[i,j]/xs*15);
    PutPixel(c,c+1,c2); PutPixel(c+1,c1+1,c2); Inc(c,2);
    end;
  Inc(c1,2);
end;

readln;
clrscr;
readkey;



OutTextXY(0,12,'Nejvetsi osvetleni stolu: '+CdoR(xss,7,2)+' lx');         //zarovnání vysledku, aby byly desetinne tecky pod sebou
OutTextXY(0,24,'Nejmensi osvetleni stolu: '+CdoR(yss,7,2)+' ln');
OutTextXY(0,36,'Nedosvetlena plocho pro umisteni stolu: '+CdoR(m/((mx+1)*(my+1))*100,14,2)+' %');
m1:=100;
for l:=0 to my do begin
  m:=0;
  for k:=0 to mx do begin
    m2:=trunc(Stul[k,l]/xss*15);                                //prevod na celociselny typ
    PutPixel(m,m1,m2); PutPixel(m+1,m1,m2); Inc(m,2);              //vykreslení bodu
    end;
  m:=0;
  for k:=0 to mx do begin
    m2:=trunc(Stul[k,l]/xss*15);
    PutPixel(m,m+1,m2); PutPixel(m+1,m1+1,m2); Inc(m,2);
    end;
  Inc(m1,2);
end;


readln;
CloseGraph;                                                         //ukonceni grafickeho rezimu
end.
Nahlásit jako SPAM
IP: 88.102.95.–
gna
~ Anonymní uživatel
1850 příspěvků
9. 5. 2017   #11
-
+1
-
Zajímavé

Když smažeš načítání vstupu a smazání obrazovky, tak to nečeká na vstup a nesmaže obrazovku. Co jiného by to mělo udělat než vykreslit oba grafy hned a přes sebe? To je snad jasné.
(A nevím, jestli clrscr v grafickém režimu maže obrazovku. Spíš bych to viděl na clearviewport, nebo tak něco)

Netuším, co znamená, že to druhou část nepřečte.
Máš tam readln (načtení řádku, tedy všeho do enteru) a readkey (načtení jedné libovolné klávesy). Není možné, že jsi prostě něco z toho nezadala?

Nahlásit jako SPAM
IP: 213.211.51.–
Lolo240
Newbie
9. 5. 2017   #12
-
0
-

Děkuji za odpověď a co mám tedy doprostřed prosím napsat? Co jsem mohla nezadat? Děkuju

Nahlásit jako SPAM
IP: 88.102.95.–
MilanL+1
Grafoman
10. 5. 2017   #13
-
+1
-
Zajímavé

   


    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;

// Mělo by být


    for k:=0 to mx do
    for l:=0 to my do begin
      if Stul[k,l] > xss then xss:=Stul[k,l];
      if Stul[k,l] < yss then yss:=Stul[k,l];
      if Stul[k,l] < MinOsvs then Inc(m);
  end;

#10 Lolo24
No, ale stále tam v sekci stolu při zjišťování min max porovnáváš ty min max s hodnotou místnosti.

Nahlásit jako SPAM
IP: 185.112.167.–
gna
~ Anonymní uživatel
1850 příspěvků
10. 5. 2017   #14
-
+1
-
Zajímavé

#12 Lolo24
Já to nemám na čem vyzkoušet, ale viděl bych to takhle: 

vykreslit prvni

readln; { pockat na enter }
ClearDvice; { smazat obrazovku }

vykreslit druhy

readln; { pockat na enter }
CloseGraph;
Nahlásit jako SPAM
IP: 213.211.51.–
Lolo240
Newbie
10. 5. 2017   #15
-
0
-

Posunula jsem příslušné souřadnice o konstantu, takže to už funguje. Děkuji za rady.

Nahlásit jako SPAM
IP: 88.102.95.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Příklad — založil Hana

C - příklad — založil Adam

Příklad — založil uzi

Příklad v C++ — založil squirrel

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý