Ciklas WHILE

Programuojant dažnai tenka kartoti veiksmus nežinant tikslaus kartojimų skaičiaus. Pastarasis priklauso nuo kažkokios sąlygos. Programavime tokiems uždaviniams spręsti yra naudojamas ciklas WHILE.

Bendru atveju ciklo WHILE sintaksė atrodo taip:

while (sąlyga)

Sakinys;

Sąlyga – loginis reiškinys. Jei to loginio reiškinio reikšmė teisinga, tai vykdomas Sakinys, kuris dažniausiai būna sudėtinis, nes reikia atlikti skaičiavimus ar išvesti kokius nors pranešimus bei keisti sąlygoje esančių kintamųjų reikšmes, kad sąlygos loginis reiškinys kada nors įgautų klaidingą reikšmę ir ciklas būtų užbaigtas. Sudėtinis sakinys, tai kelių sakinių seka, parašyta tarp { }.

Reikėtų nepamiršti prieš ciklą nusakyti pradines (galutines) reikšmes, kurios dažniausiai keičiamos (kai yra panaudojamos) sąlygoje atliekant ciklą.

Pirmas pavyzdys. Parašykite programą, kuri suskaičiuotų kiek natūralių skaičių intervale [a; b] yra lyginių skaičių, besidalijančių iš 3. Tokius skaičius reikia išvesti į ekraną.

#include <iostream>

using namespace std;

int main()
{
int a, b, kiek;
cout << “Įveskite intervalo pradžią” << endl;
cin >> a;
cout << “Įveskite intervalo pabaigą (reikšmė didesnė nei intervalo pradžios)” << endl;
cin >> b;
kiek = 0;
while (a <= b)
{
if (a %2 ==0 && a % 3 ==0)
{
cout << a << ” “;
kiek++;
}
a++;  //kadangi kintamojo a reikšmė jau panaudota, ją reikia keisti, kad ciklo sąlyga keistųsi
}
cout << endl;
cout << “Lyginių skaičių, dalių iš 3, nurodytame intervale yra: ” << kiek << endl;
return 0;
}

Užduotys

  1. Slidininkas treniruotis pradėjo nušliuoždamas a km nuotolį. Kiekvieną kitą treniruotę jis įveikdavo b km daugiau. Parašykite programą, nurodančią kurią, treniruotę nušliuožtas nuotolis viršys c km. Pasitikrinkite. Jei a = 1, b = 1, c = 10, tai turi būti išvesta: 6. Jei a = 2, b = 3, c = 10, tai turi būti išvesta 4.
  2. Martynas labai mėgsta saldainius. Mamos slėptuvėje jis rado m saldainių. Pirmą dieną jis suvalgė 1 saldainį, antrąją – 2, trečiąją – 3. Kiekvieną kitą dieną jis suvalgydavo vienu saldainiu daugiau negu prieš tai buvusią dieną. Per kelias dienas d Martynas suvalgys visus saldainius? Paskutinei dienai gali likti mažiau saldainių. Pasitikrinkite. Kai m = 11, turėtumėte gauti d = 5.
  3. Bankas už indėlius moka p procentų palūkanų per metus. Metų gale palūkanos pridedamos prie indėlio. Jei indėlininkas pinigų nė kiek neišima, palūkanos skaičiuojamos nuo vis didesnės sumos. Parašykite programą, kuri apskaičiuotų, per kiek metų t pradinis indėlis ind pasieks sumą s. Pasitikrinkite. Kai p = 5, ind = 1000, s = 1200, turėtumėte gauti t = 4.
  4. Studentas nusprendė kiekvieną sekmadienį eiti į teatrą. Norėdamas užsidirbti tam pinigų, nešiojo rytais laikraščius ir taip gaudavo po 5 litus kiekvieną savaitės dieną. Sekmadienį studentas pirkdavo bilietą į teatrą už 10 litų, o likusius per savaitę uždirbtus pinigus išleisdavo teatro kavinėje. Tačiau bilietai pradėjo brangti. Parašykite programą, kuri apskaičiuotų, po kiek savaičių studentui nebeužteks pinigų net bilietui, jei bilietai brangsta kas dvylika savaičių po p procentų, o studento uždarbis nekinta. Pasitikrinkite. Jei p = 50, tai pinigų bilietui nebeužteks po 48 savaičių.
  5. Gobšus žemių savininkas pradėjo supirkinėti žemę. Pirmojo jo pirkto sklypo plotas – n hektarų, antrojo – m hektarų. Toliau žemvaldžio apetitas pradėjo augti. Trečiojo sklypo plotas buvo lygus pirmojo ir antrojo sklypų plotų sumai, ketvirtojo plotas – antrojo ir trečiojo plotų sumai ir t.t. Sudarykite programą, nustatančią, kelinto gobšuolio sklypo plotas viršys s hektarų. Pasitikrinkite. Kai n = 5, m = 6, s = 12, tai turi būti išvesta 4. Kai n = 1, m = 1, s = 10, tai turi būti išvesta 7. Kai n = 8, m = 10, s = 25, tai turi būti išvesta 4.
  6. Jonukas ir Petriukas riešutavo. Surinkus n riešutų jie nutarė pasidalyti taip: Jonukas paims vieną riešutą, Petriukas – 2, Jonukas – 3, Petriukas – 4 ir t.t., kol riešutų bus. Paskutinis paims likusius riešutus. Sudarykite programą, apskaičiuojančią, po kiek riešutų gaus kiekvienas vaikas. Pasitikrinkite. Jei n = 10, tai turi būti išvesta: Jonukas gaus 4, o Petriukas gaus 6. Jei n = 11, tai turi būti išvesta: Jonukas gaus 5, o Petriukas gaus 6. Jei n = 15, tai turi būti išvesta: Jonukas gaus 9, o Petriukas gaus 6. Jei n = 16, tai turi būti išvesta: Jonukas gaus 9, o Petriukas gaus 7. Jei n = 18, tai turi būti išvesta: Jonukas gaus 9, o Petriukas gaus 9.