• Náhodné hodnoty a premenné

        • RiešenieA

            1) Napíšte program, ktorý nakreslí náhodne veľký obdĺžnik.

          a) Veľkosť strany je najmenej 20 ale nie viac ako 120. Jeho ľavý horný vrchol je v bode [50; 150].

          b) Potom program nakreslí štvorec s ľavým horným vrcholom v bode [300; 150], ktorý má rovnaký obvod ako obvod obdĺžnika.

          c) Ďalej nech program vypíše rozmery obdĺžnika a štvorca a ich obvod.

          procedure TForm1.Button1Click(Sender: TObject);//1A

          var

            a,b,strana, obvod:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=random(101)+20;

            b:=random(101)+20;

            Image1.Canvas.Rectangle(50,150,50+a,150+b);

            obvod:=(a+b)*2;

            strana:=obvod div 4;

            Image1.Canvas.Rectangle(300,150,300+a,150+a);

            Image1.Canvas.TextOut(50,300,'rozmery obdlznika su a='+IntToStr(a)+' b='+IntToStr(b));

            Image1.Canvas.TextOut(50,320,'rozmer stvorca a='+IntToStr(strana));

            Image1.Canvas.TextOut(50,340,'obvod obdlznika a stvorca je o='+IntToStr(obvod));

          end;

            2) Vytvorte program, ktorý najprv

          a) vodorovnou priamkou rozdelí grafickú plochu na dve rovnaké časti.

          b)  Potom v hornej časti grafickej plochy vygeneruje kruh tak, aby jeho polomer bol od 50 do 100 grafických bodov náhodnej červenej farby a jeho       stred ležal v danej časti grafickej plochy.

          c)  Ďalej podľa vygenerovanej pozície sa nakreslí ďalší kruh, ktorý je s ním podľa danej priamky symetrický.

          procedure TForm1.Button3Click(Sender: TObject); //2A

          var

            x,y,r,x1,y1:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            Image1.Canvas.MoveTo(0,Image1.Height div 2);

            Image1.Canvas.LineTo(Image1.Width,Image1.Height div 2);

            r:=random(51)+50;

            x:=random(Image1.Width);

            y:=random(Image1.Height div 2);

            Image1.Canvas.Brush.Color:=RGB(random(128)+128,0,0);

            Image1.Canvas.Ellipse(x-r,y-r,x+r,y+r);

            Image1.Canvas.Ellipse(x-r,Image1.Height-(y-r),x+r,Image1.Height-(y+r));

          end;

            3) Traja zbojníci Macho, Nacho a Pacho sa dohodli, že pôjdu spolu na zboj a večer si celý lup spravodlivo rozdelia. Vytvorte program, ktorý

          a) zo vstupu prečíta tri čísla a vypíše ako si majú lup spravodlivo rozdeliť.

          b) Ďalej nech program vypíše, koľko z nazbíjaných peňazí im zostane na dobročinné účely (nedajú sa medzi troch zbojníkov rozdeliť).
           

          procedure TForm1.Button5Click(Sender: TObject);//3A

          var

            a,b,c,lup,dar:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=StrToInt(edit1.Text);

            b:=StrToInt(edit2.Text);

            c:=StrToInt(edit3.Text);

            lup:=(a+b+c) div 3;

            dar:=(a+b+c) mod 3;

            Image1.Canvas.textOut(50,150,'lup si rozdelia po '+IntToStr(lup));

            Image1.Canvas.TextOut(50,170,'na dobrocinnost daju '+IntTostr(dar));

          end;

           4) Vytvorte program ktorý nakreslí takúto vlajku.

             a) Rozmery vlajky budú náhodné no minimálne 200 a maximálne 300 bodov. Vlajka je rozdelená na tri rovnaké zvislé pruhy.

             b) Pravý a ľavý pruh je vyplnený rovnakou ale náhodnou farbou, stredný náhodnou modrou farbou.

             c) Okraje vlajky a úchytka sú nakreslené náhodnou šedou farbou hrúbky 5 pixelov.

          procedure TForm1.Button7Click(Sender: TObject);//4A

          var

            a,b,rozmer,farba:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=random(101)+200;

            b:=random(101)+200;

            rozmer:=a div 3;

            farba:=random(250);

            Image1.Canvas.Pen.Width:=5;

            Image1.Canvas.Pen.Color:=RGBToColor(farba,farba,farba);

            Image1.Canvas.MoveTo(49+3*rozmer,50+b);

            Image1.Canvas.LineTo(49+3*rozmer,150+b);

            Image1.Canvas.Brush.Color:=RGB(random(256),random(256),random(256));

            Image1.Canvas.Rectangle(50,50,50+rozmer,50+b);

            Image1.Canvas.Rectangle(50+2*rozmer,50,50+3*rozmer,50+b);

            Image1.Canvas.Brush.Color:=RGB(0,0,random(128)+128);

            Image1.Canvas.Rectangle(50+rozmer,50,50+2*rozmer,50+b);

          end;

          Riešenie B

             1) Napíšte program, ktorý nakreslí náhodne veľký obdĺžnik.

          a) Veľkosť strany je najmenej 30 ale nie viac ako 130. Jeho ľavý horný vrchol je v bode [30; 120].

          b) Potom program nakreslí štvorec s ľavým horným vrcholom v bode [300; 120], ktorý má dvojnásobný obvod ako obvod obdĺžnika.

          c) Ďalej nech program vypíše rozmery obdĺžnika a štvorca a ich obvod.

          procedure TForm1.Button2Click(Sender: TObject);//1B

          var

            a,b,strana, obvod:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=random(101)+30;

            b:=random(101)+30;

            Image1.Canvas.Rectangle(30,120,30+a,120+b);

            obvod:=(a+b)*2;

            strana:=(2*obvod) div 4;

            Image1.Canvas.Rectangle(300,150,300+a,150+a);

            Image1.Canvas.TextOut(50,300,'rozmery obdlznika su a='+IntToStr(a)+' b='+IntToStr(b));

            Image1.Canvas.TextOut(50,320,'rozmer stvorca a='+IntToStr(strana));

            Image1.Canvas.TextOut(50,340,'obvod obdlznika je o='+IntToStr(obvod)+' obvod stvorca je o='+IntToStr(2*obvod));

          end;

            2) Vytvorte program, ktorý najprv

          a) zvislou priamkou rozdelí grafickú plochu na dve rovnaké časti.

          b) Potom v ľavej časti grafickej plochy vygeneruje kruh tak, aby jeho polomer bol od 50 do 100 grafických bodov náhodnej zelenej farby a jeho stred ležal v danej časti grafickej plochy.

          c)  Ďalej podľa vygenerovanej pozície sa nakreslí ďalší kruh, ktorý je s ním podľa danej priamky symetrický.
           

          procedure TForm1.Button4Click(Sender: TObject);//2B

          var

            x,y,r,x1,y1:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            Image1.Canvas.MoveTo(Image1.Width div 2,0);

            Image1.Canvas.LineTo(Image1.Width div 2,Image1.Height);

            r:=random(51)+50;

            x:=random(Image1.Width div 2);

            y:=random(Image1.Height);

            Image1.Canvas.Brush.Color:=RGBToColor(0,random(128)+128,0);

            Image1.Canvas.Ellipse(x-r,y-r,x+r,y+r);

            Image1.Canvas.Ellipse(Image1.Width-(x-r),y-r,Image1.Width-(x+r),y+r);

          end;

             3) Štyria zbojníci Macho, Nacho, Pacho a Racho sa dohodli, že pôjdu spolu na zboj a večer si celý lup spravodlivo rozdelia. Vytvorte program, ktorý

          a) zo vstupu prečíta štyri čísla a vypíše ako si majú lup spravodlivo rozdeliť.

          b) Ďalej nech program vypíše, koľko z nazbíjaných peňazí im zostane na dobročinné účely (nedajú sa medzi štyroch zbojníkov rozdeliť).
           

          procedure TForm1.Button6Click(Sender: TObject);//3B

          var

            a,b,c,d,lup,dar:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=StrToInt(Edit4.Text);

            b:=StrToInt(Edit5.Text);

            c:=StrToInt(Edit6.Text);

            d:=StrToInt(Edit7.Text);

            lup:=(a+b+c) div 4;

            dar:=(a+b+c) mod 4;

            Image1.Canvas.TextOut(50,150,'lup si rozdelia po '+IntToStr(lup));

            Image1.Canvas.TextOut(50,170,'na dobrocinnost daju '+IntTostr(dar));

          end;

           4) Vytvorte program ktorý nakreslí takúto vlajku.

          a)  Rozmery vlajky budú náhodné no minimálne 200 a maximálne 300 bodov. Vlajka je rozdelená na tri rovnaké vodorovné pruhy.

          b)  Horný pruh je vyplnený náhodnou šedou farbou, stredný bielou a spodný náhodnou modrou farbou.

          c)   Okraje vlajky a úchytka sú nakreslené rovnakou ale náhodnou farbou hrúbky 5 pixelov.

          procedure TForm1.Button8Click(Sender: TObject);//4B

          var

            a,b,rozmer,farba:Integer;

          begin

            Image1.Canvas.Brush.Color:=clWhite;

            Image1.Canvas.FillRect(ClientRect);

            a:=random(101)+200;

            b:=random(101)+200;

            rozmer:=b div 3;

            farba:=random(250);

            Image1.Canvas.Pen.Width:=5;

            Image1.Canvas.Pen.Color:=RGB(random(256),random(256),random(256));

            Image1.Canvas.MoveTo(49+a,50+3*rozmer);

            Image1.Canvas.LineTo(49+a,150+3*rozmer);

            Image1.Canvas.Brush.Color:=RGBToColor(farba,farba,farba);

            Image1.Canvas.Rectangle(50,50,50+a,50+rozmer);

            Image1.Canvas.Brush.Color:=RGBToColor(255,255,255);

            Image1.Canvas.Rectangle(50,50+rozmer,50+a,50+2*rozmer);

            Image1.Canvas.Brush.Color:=RGBToColor(0,0,random(128)+128);

            Image1.Canvas.Rectangle(50,50+2*rozmer,50+a,50+3*rozmer);

          end;

          Úlohy na samostatné riešenie Nahodne_hodnoty-premenne.docx