11. Ciklas cikle

Kartais kartojami veiksmai taip pat yra ciklai. Tokios konstrukcijos vadinamos ciklais cikle.
Ciklas cikle užrašomas:
for i := m to n do {išorinis ciklas}
  begin
    sakinys1
    sakinys2
    for j := k to p do {vidinis ciklas}
      . . .
    while s < h do {vidinis ciklas}
      . . .
  end

Kompiuteris, kiekvieną kartą atlikdamas išorinio ciklo sakinius, vidinius ciklus atlieka iš naujo. Tokiu būdu vidiniam ciklui for priklausantys sakiniai atliekami (n – m + 1)*(p – k + 1) kartą. Kai vidinis ciklas while, tai galimi įvairūs atvejai – viskas priklauso nuo sąlygos teisingumo.

Pvz. 11.1

Parašykime programą, kuri rastų sumą

1k + 2k + 3k + … + nk

 

1 tikrinamasis darbas

Pvz. 11.2

Duotas natūraliųjų skaičių intervalas [m, n]. Parašykime programą, kuri rastų intervalo skaičių turintį daugiausia daliklių (į daliklių skaičių įskaitant 1 ir patį skaičių).

 

Pvz. 11.3

Parašykime programą, kuri suskaičiuotų kiek yra triženklių skaičių, kurių vidurinis skaitmuo lygus pirmojo ir trečiojo skaitmenų sumai.

 

Užduotys

Nr. 1

Pavyzdyje 11.1 parašytą programą pertvarkykite programą, kad ji rastų sumą:

a) 1n + 2n + 3n + … + nn

b) 11 + 22 + 33 + … + nn

Nr. 2

Parašyta programa, kuri skaičiuoja kiek duotame intervale [m, n] yra skaičių, kurie dalijasi iš juos sudarančių skaitmenų sumos. Įrašykite vietoje tritaškių trūkstamas dalis.

program kiekskd;
var m, n, ks, ss, sk, i : integer;
begin
  writeln('Įveskite intervalo galus m ir n.');
  read(...);
  ks := ... ;
  for i := ... to ... do
    begin
      sk := i; ss := ...;
      while sk > 0 do
        begin
          ss := ... + sk ... 10;
          sk := ... div ...
        end;
      if i mod ss = ...
        then ks := ... + ...
    end
  writeln('... = ',...)
end.

Nr.3

Pakeiskite Nr.2 programą, kad ji:

a) atspausdintų tuos skaičius;

b) atspausdintų tik lyginius iš tų skaičių;

c) atspausdintų mažiausią iš tų skaičių;

d) atspausdintų didžiausią iš tų skaičių.

Nr. 4

Parašykite programą sumai rasti

1*2 + 2*3*4 + 3*4*5*6 + … + n*(n + 1)*… *2n.

Nr. 5

Parašykite programą n-ženkliams skaičiams rasti, kurių pirmą skaitmenį perkėlus į galą būtų gaunamas skaičiaus kartotinis.