# Ciklai

# Apie ciklus

  • Ciklai naudojami norint kartoti tuos pačius veiksmus daugiau nei vieną kartą.
  • Yra keli skirtingi ciklai:
    • for
    • while
    • do while
  • Kiekvienas ciklas pasižymi tam tikromis savybėmis, todėl kiekvienu atveju reikia patiems nuspręsti kuris ciklas tuo konkrečiu atveju yra tinkamiausias panaudojimui.

# Ciklas for

# Apie for ciklą

Šis ciklas dažniausiai naudojamas kai yra žinoma kiek kartų jis turi būti vykdomas.

# Ciklo for sintaksė

for (<kintamasis>; <sąlyga>; <veiksmas>)
{
    // kodas
}
  • kintamasis - ciklo darbui reikalingas kintamasis, kuris bus sunaikintas ciklui baigus darbą, dažniausiai naudojamas norint suvaldyti kiek kartų ciklas turi būti vykdomas.
  • sąlyga - ciklas bus vykdomas kol sąlyga bus teisinga (grąžins true), sąlyga apsirašo tokiu pačiu principu kaip apsirašydavo patikrinimo sąlygoje if.
  • veiksmas - kas bus daroma kiekvienos ciklo iteracijos metu, dažniausiai - didinamas kintamasis.
  • kodas - kodas, kuris bus vykdomas jei sąlyga teisinga.

# Pavyzdžiai (1 dalis)

# Pavyzdys 1

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 10; i++)
	{
		cout << i << endl;
	}
}

Rezultatai:

0
1
2
3
4
5
6
7
8
9

# Pavyzdys 2

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 5; i <= 10; i++)
	{
		cout << i << " ";
	}
}

Rezultatai:

5 6 7 8 9 10 

# Pavyzdys 3

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 5; i <= 50; i += 5)
	{
		cout << "[" << i << "] ";
	}
}

Rezultatai:

[5] [10] [15] [20] [25] [30] [35] [40] [45] [50] 

# Pavyzdys 4

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 2; i <= 10; i++)
	{
		if (i % 2 == 0)
		{
			cout << "skaicius " << i << " yra lyginis" << endl;
		}
	}
}

Rezultatai:

skaicius 2 yra lyginis
skaicius 4 yra lyginis
skaicius 6 yra lyginis
skaicius 8 yra lyginis
skaicius 10 yra lyginis

# Pavyzdys 5

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 1; i <= 25; i++)
	{
		if (i % 2 == 0 || i % 5 == 0)
		{
			cout << "skaicius " << i << " dalinasi is 2 arba 5\n";
		}
	}
}

Rezultatai:

skaicius 2 dalinasi is 2 arba 5
skaicius 4 dalinasi is 2 arba 5
skaicius 5 dalinasi is 2 arba 5
skaicius 6 dalinasi is 2 arba 5
skaicius 8 dalinasi is 2 arba 5
skaicius 10 dalinasi is 2 arba 5
skaicius 12 dalinasi is 2 arba 5
skaicius 14 dalinasi is 2 arba 5
skaicius 15 dalinasi is 2 arba 5
skaicius 16 dalinasi is 2 arba 5
skaicius 18 dalinasi is 2 arba 5
skaicius 20 dalinasi is 2 arba 5
skaicius 22 dalinasi is 2 arba 5
skaicius 24 dalinasi is 2 arba 5
skaicius 25 dalinasi is 2 arba 5

# Pavyzdys 6

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int kiek;
	cout << "Iveskite kiek skaiciu parodyti: ";
	cin >> kiek;

	cout << "Skaiciai:\n";

	for (int i = 1; i <= kiek; i++)
	{
		cout << i << endl;
	}
}

Rezultatas 1:

Iveskite kiek skaiciu parodyti: 5
Skaiciai:
1
2
3
4
5

Rezultatas 2:

Iveskite kiek skaiciu parodyti: 9
Skaiciai:
1
2
3
4
5
6
7
8
9

# Pavyzdys 7

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int pradzia, pabaiga;

	cout << "Iveskite reziu pradia: ";
	cin >> pradzia;

	cout << "Iveskite reziu pabaiga: ";
	cin >> pabaiga;

	cout << "Skaiciai patenkantys i rezius [" << pradzia << "-" << pabaiga << "]: ";

	for (int i = pradzia; i <= pabaiga; i++)
	{
		cout << i << " ";
	}
}

Rezultatas 1:

Iveskite reziu pradia: 4
Iveskite reziu pabaiga: 6
Skaiciai patenkantys i rezius [4-6]: 4 5 6

Rezultatas 2:

Iveskite reziu pradia: 12
Iveskite reziu pabaiga: 18
Skaiciai patenkantys i rezius [12-18]: 12 13 14 15 16 17 18

Rezultatas 3:

Iveskite reziu pradia: 99
Iveskite reziu pabaiga: 107
Skaiciai patenkantys i rezius [99-107]: 99 100 101 102 103 104 105 106 107

Rezultatas 4:

Iveskite reziu pradia: -10
Iveskite reziu pabaiga: 0
Skaiciai patenkantys i rezius [-10-0]: -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0

# Pavyzdys 8

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 5; i++)
	{
		cout << i << " ";
	}

	cout << endl;

	for (int i = 0; i <= 5; i++)
	{
		cout << i << " ";
	}

	cout << endl;

	for (int i = 1; i < 5; i++)
	{
		cout << i << " ";
	}

	cout << endl;

	for (int i = 1; i <= 5; i++)
	{
		cout << i << " ";
	}
}

Rezultatai:

0 1 2 3 4
0 1 2 3 4 5
1 2 3 4
1 2 3 4 5

# Pavyzdys 9

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; i < 5; i++)
	{
		cout << i << " ";
	}

	cout << endl;

	for (int i = 0; i < 5; i++)
	{
		cout << i+1 << " ";
	}
}

Rezultatai:

0 1 2 3 4
1 2 3 4 5

# Pavyzdys 10

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 1; i <= 5; i++)
	{
		for (int j = 1; j <= 3; j++)
		{
			cout << "i = " << i << ", j = " << j << endl;
		}
		cout << endl;
	}
}

Rezultatai:

i = 1, j = 1
i = 1, j = 2
i = 1, j = 3

i = 2, j = 1
i = 2, j = 2
i = 2, j = 3

i = 3, j = 1
i = 3, j = 2
i = 3, j = 3

i = 4, j = 1
i = 4, j = 2
i = 4, j = 3

i = 5, j = 1
i = 5, j = 2
i = 5, j = 3


# Pavyzdys 11

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 1; i <= 5; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cout << i * j << " ";
		}
		cout << endl;
	}
}

Rezultatai:

1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
5 10 15 20 25

# Pavyzdys 12

Kodas:

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
	for (int i = 1; i <= 5; i++)
	{
		for (int j = 1; j <= 5; j++)
		{
			cout << setw(2) << i * j << " ";
		}
		cout << endl;
	}
}

Rezultatai:

 1  2  3  4  5
 2  4  6  8 10
 3  6  9 12 15
 4  8 12 16 20
 5 10 15 20 25

# Pavyzdys 13

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 0; true; i++) // salyga visada true, todel gausis begalinis ciklas
	{
		cout << i << endl;

		if (i >= 5)
		{
			break; // nutraukia artimiausia cikla
		}
	}
}

Rezultatai:

0
1
2
3
4
5

# Pavyzdys 14

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (int i = 1; i < 7; i++)
	{
		if (i == 2 || i == 4)
		{
			// su continue grizta i ciklo pradzia,
			// nepabaiges iteracijos iki pabaigos
			continue;
		}

		cout << i << endl;
	}
}

Rezultatai:

1
3
5
6

# Pavyzdys 15

Kodas:

#include <iostream>
using namespace std;

int main()
{
	for (;;) // begalinis ciklas
	{
		cout << "zodis ";
	}
}

Rezultatai:

zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis zodis....

# Užduotys (1 dalis)

# Užduotis 1

Parašyti for, kuris išvestų kiekvieną skaičių pradedant nuo 0 ir baigiant 10. Kiekvieną skaičių išvesti skirtingoje eilutėje.

# Užduotis 2

Parašyti for, kuris išvestų kas antrą skaičių pradedant 0 ir baigiant 15. Kiekvieną skaičių išvesti toje pačioje eilutėje, po kiekvieno skaičiaus dedant tarpą.

# Užduotis 3

Parašyti for, kuris išvestų kas trečią skaičių, pradedant 1 ir baigiant 20. Kiekvieną skaičių išvesti toje pačioje eilutėje tačiau apskliaudžiant laužtiniais skliaustais. Pavyzdžiui: [1][4][7]...

# Užduotis 4

Parašyti for, kuris eitų pro kiekvieną skaičių nuo 1 iki 10. Jame apsirašyti if sąlygą, kuri patikrintų ar dabartinis skaičius yra lyginis, jei taip tai šį skaičių išvesti.

# Užduotis 5

Liepkite vartotojui įvesti rėžių pradžią ir pabaigą. Patikrinkite, kad tai būtų validu (pradžia turi būti mažesnė nei pabaiga). Jei rėžiai tinkami, tuomet vykdyti for, kuris atskirose eilutėse išvestų kiekvieną skaičių iš tų rėžių, bei atskiriant tarpu - tų skaičių kvadratus. Pavyzdžiui:

2 4
3 9
4 16
5 25
...

# Užduotis 6

Liepkite vartotojui įvesti rėžių pradžią ir pabaigą. Patikrinkite, kad tai būtų validu (pradžia turi būti mažesnė nei pabaiga). Jei rėžiai tinkami, tuomet vykdyti for, kuris iš duotų skaičių išvestų visus nelyginius skaičius arba tuos, kurie dalinasi iš 8.

# Užduotis 7 (sudėtingesnė)

  • Liepkite vartotojui įvesti rėžių pradžią ir pabaigą. Patikrinkite, kad tai būtų validu (pradžia turi būti mažesnė nei pabaiga).
  • Jei rėžiai tinkami, tuomet vykdyti ciklą, kuris visus šiuos skaičius išvestų atskirose eilutėse, šalia kiekvieno skaičiaus išvedant informaciją iš kokių skaičių nuo 2 iki 10 jis dalinasi. Pavyzdžiui:
skaicius 15 dalinasi is 3 5
skaicius 16 dalinasi is 2 4 8
skaicius 17 dalinasi is
skaicius 18 dalinasi is 2 3 6 9
skaicius 19 dalinasi is
skaicius 20 dalinasi is 2 4 5
skaicius 21 dalinasi is 3 7
skaicius 22 dalinasi is 2
skaicius 23 dalinasi is
skaicius 24 dalinasi is 2 3 4 6 8
skaicius 25 dalinasi is 5
  • Papildomai: padarykite, kad skaičiaus nesidalinimo atveju, vietoj teksto "dalinasi iš" būtų išvesta, kad skaičius iš nieko nesidalina.

# Užduotis 8 (sudėtingesnė)

Be daugybos veiksmo programoje, sudauginti du skaičius.

# Pavyzdžiai (2 dalis)

# Pavyzdys 16

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int suma = 0;

	for (int i = 1; i <= 10; i++)
	{
		suma += i;
	}

	cout << "skaiciu [1-10] suma: " << suma;
}

Rezultatai:

skaiciu [1-10] suma: 55

# Pavyzdys 17

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int suma = 0;

	for (int i = 1; i <= 10; i++)
	{
		if (i % 2 == 0)
		{
			suma += i;
		}
	}

	cout << "lyginiu skaiciu, kurie patenka i rezius [1-10] suma: " << suma;
}

Rezultatai:

lyginiu skaiciu, kurie patenka i rezius [1-10] suma: 30

# Užduotys (2 dalis)

# Užduotis 9

Raskite visų skaičių nuo 1 iki 100 sumą.

# Užduotis 10

Raskite visų lyginių skaičių nuo 20 iki 50 sumą.

# Užduotis 11

Raskite visų nelyginių skaičių nuo 30 iki 60 sumą.

# Užduotis 12

Rasti visų skaičių, žemesnių už 1000 ir kurie dalinasi iš 3 arba 5, sumą.

Pasitikrinimui

Visi skaičiai mažesni už 10 ir kurie dalinasi iš 3 arba 5 yra: 3, 5, 6, 9.

Šių skaičių suma yra 23.

Turite gauti 233168 atsakymą.

# Užduotis 13

Viena iš populiarų programavimo patikrinimo užduočių vadinama "Fizz-Buzz". Jos aprašas žemiau:

The "Fizz-Buzz test" is an interview question designed to help filter out the 99.5% of programming job candidates who can't seem to program their way out of a wet paper bag. The text of the programming assignment is as follows:

"Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”."

# Užduotis 14 (sudėtingesnė)

Parašykite for ciklą, kuris išvestų norimą kiekį fibonačiaus skaičių į ekraną. Fibonačiaus sekoje kiekvienas skaičius yra lygus prieš jį ėjusių dviejų skaičių sumai: 1, 1, 2, 3, 5, 8, 13, 21...

Pagalba kaip atlikti užduotį:

  • Susikurkite tris sveikųjų skaičių kintamuosius. Pirmi du kintamieji saugos paskutinius du skaičius. Trečiasis bus šių pirmų dviejų skaičių suma.
  • Pirmus du skaičius išveskite ne cikle, o prieš jį ir ciklą pradėkite vykdyti nuo 2, o ne nuo 0.
  • Kiekvieno ciklo metu turite perskaičiuot trečiąjį skaičių (pirmų dviejų skaičių sudėtis), tuomet pirmojo skaičiaus reikšmę pakeisti į tokią kokia yra saugoma antrąjame, o antrojo kintamojo reikšmę - į trečiojo. Išvesti į ekraną trečią skaičių.

Papildomai: raskite išvestos fibonačiaus skaičių sekos sumą.

# Ciklas while

# Apie ciklą while

Šis ciklas dažniausiai naudojamas kai nežinome kiek kartų ciklas turėtų būti vykdomas. Pavyzdžiui:

  • Nuskaitinėjame failą, tačiau nežinome kiek teksto eilučių jame yra.
  • Bandome iš vartotojo gauti duomenis, tačiau nežinome iš kelinto karto jis sugebės suvesti duomenis tvarkingai.
  • Vykdome skaičiavimus ir norime juos vykdyti iki kol pasieksime tinkamą rezultatą.
  • ...

# Ciklo while sintaksė

while (sąlyga)
{
    // kodas
}
  • sąlyga - ciklas bus vykdomas tol kol sąlyga bus teisinga (grąžins true), sąlygos užrašymo būdas yra lygiai toks pats kaip prie patikrinimo sąlygos if.
  • kodas - bus įvykdomas norimas kodas, kai sąlyga teisinga.

# Pavyzdžiai

# Pavyzdys 1

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 1;

	while (skaicius < 10)
	{
		cout << skaicius << endl;
		skaicius++;
	}
}

Rezultatai:

1
2
3
4
5
6
7
8
9

# Pavyzdys 2

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 1;

	while (true)
	{
		if (skaicius >= 5)
		{
			break;
		}

		cout << skaicius << endl;
		skaicius++;
	}
}

Rezultatai:

1
2
3
4

# Atsitiktinis skaičius

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
    // sukuria seed, kuris bus naudojamas atsitiktinio skaiciaus generavimui
	srand(time(NULL));

	int atsitiktinis = rand() % 10 + 1; // nuo 1 iki 10

	int v1 = rand() % 100;         // nuo 0 iki 99
	int v2 = rand() % 100 + 1;     // nuo 1 iki 100
	int v3 = rand() % 30 + 1985;   // nuo 1985 iki 2014

	cout << atsitiktinis << endl
		<< v1 << endl
		<< v2 << endl
		<< v3;
}

Rezultatas 1:

6
97
24
1991

Rezultatas 2:

8
63
76
1990

Rezultatas 3:

7
18
57
2000

# Pavyzdys 3

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	int kiekis = 10;

	while (kiekis >= 0)
	{
		cout << "turimu kiekis: " << kiekis << endl;
		kiekis -= rand() % 3 + 1;
	}
}

Rezultatas 1:

turimu kiekis: 10
turimu kiekis: 8
turimu kiekis: 7
turimu kiekis: 6
turimu kiekis: 4
turimu kiekis: 2
turimu kiekis: 1

Rezultatas 2:

turimu kiekis: 10
turimu kiekis: 7
turimu kiekis: 5
turimu kiekis: 3
turimu kiekis: 2

# Pavyzdys 4

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 0;

	while (skaicius < 10)
	{
		skaicius++;

		if (skaicius == 2 || skaicius == 4 || skaicius == 7)
		{
			continue;
		}

		cout << skaicius << endl;
	}
}

Rezultatai:

1
3
5
6
8
9
10

# Pavyzdys 5

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	while (true)
	{
		int skaicius = rand() % 100 + 1;
		cout << skaicius << endl;

		if (skaicius % 2 == 0 && skaicius % 7 == 0)
		{
			cout << "skaicius " << skaicius << " dalinasi is 2 ir is 7" << endl;
			break;
		}
	}
}

Rezultatas 1:

97
87
80
35
37
91
24
23
43
3
24
81
4
28
skaicius 28 dalinasi is 2 ir is 7

Rezultatas 2:

30
67
14
skaicius 14 dalinasi is 2 ir is 7

Rezultatas 3:

72
56
skaicius 56 dalinasi is 2 ir is 7

# Pavyzdys 6

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	int kiekis = 0;

	while (kiekis <= 10)
	{
		int skaicius = rand() % 100 + 1;
		cout << skaicius;

		if (skaicius % 2 == 0)
		{
			cout << " yra lyginis";
		}

		cout << endl;
		kiekis++;
	}
}

Rezultatas 1:

83
73
40 yra lyginis
28 yra lyginis
78 yra lyginis
15
80 yra lyginis
22 yra lyginis
7
95
93

Rezultatas 2:

13
5
77
22 yra lyginis
5
20 yra lyginis
24 yra lyginis
77
40 yra lyginis
98 yra lyginis
61

# Pavyzdys 7

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	int kiekis = 0;
	int suma = 0;

	while (kiekis <= 10)
	{
		int skaicius = rand() % 100 + 1;
		cout << skaicius;

		if (skaicius % 2 == 0)
		{
			suma += skaicius;
			cout << " yra lyginis";
		}

		cout << endl;
		kiekis++;
	}

	cout << "lyginiu skaiciu suma: " << suma;
}

Rezultatas 1:

52 yra lyginis
27
75
38 yra lyginis
77
84 yra lyginis
39
20 yra lyginis
41
59
79
lyginiu skaiciu suma: 194

Rezultatas 2:

8 yra lyginis
42 yra lyginis
54 yra lyginis
31
85
2 yra lyginis
14 yra lyginis
25
94 yra lyginis
46 yra lyginis
65
lyginiu skaiciu suma: 260

# Pavyzdys 8

Kodas:

#include <iostream>
#include <time.h>
using namespace std;

int main()
{
	srand(time(NULL));

	int skaicius = 0;

	while (skaicius < 10)
	{
		cout << skaicius << endl;
		skaicius = rand() % 15 + 1;
	}
}

Rezultatas 1:

0
1
4

Rezultatas 2:

0
5
9
7
6
9

# Pavyzdys 9

Kodas:

#include <iostream>
using namespace std;

int main()
{
	char veiksmas = 't';

	while (veiksmas == 't')
	{
		cout << "yey! as cikle!" << endl
			<< "ar norite testi? (t/n)" << endl;
		cin >> veiksmas;
	}
}

Rezultatas 1:

yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
n

Rezultatas 2:

yey! as cikle!
ar norite testi? (t/n)
t
yey! as cikle!
ar norite testi? (t/n)
n

# Pavyzdys 10

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius;

	cout << "Iveskite skaiciu, kuris patektu i rezius [1-100]: ";
	cin >> skaicius;

	while (skaicius < 0 || skaicius > 100)
	{
		cout << "Blogai ivestas skaicius" << endl
			<< "Bandykite dar karta:" << endl;
		cin >> skaicius;
	}

	cout << "Sekmingai ivesta!" << endl;
	cout << "Ivestas skaicius: " << skaicius;
}

Rezultatas 1:

Iveskite skaiciu, kuris patektu i rezius [1-100]: 5
Sekmingai ivesta!
Ivestas skaicius: 5

Rezultatas 2:

Iveskite skaiciu, kuris patektu i rezius [1-100]: -688
Blogai ivestas skaicius
Bandykite dar karta:
9999
Blogai ivestas skaicius
Bandykite dar karta:
50
Sekmingai ivesta!
Ivestas skaicius: 50

Rezultatas 3:

Iveskite skaiciu, kuris patektu i rezius [1-100]: 8454
Blogai ivestas skaicius
Bandykite dar karta:
15
Sekmingai ivesta!
Ivestas skaicius: 15

Rezultatas 4:

Iveskite skaiciu, kuris patektu i rezius [1-100]: 84848
Blogai ivestas skaicius
Bandykite dar karta:
4144
Blogai ivestas skaicius
Bandykite dar karta:
1515
Blogai ivestas skaicius
Bandykite dar karta:
51544
Blogai ivestas skaicius
Bandykite dar karta:
10
Sekmingai ivesta!
Ivestas skaicius: 10

# Pavyzdys 11

Kodas:

#include <iostream>
using namespace std;

int main()
{
	cout << "Pasirinkite:\n"
		<< "1 - jei x priezastis\n"
		<< "2 - jei y priezastis\n"
		<< "3 - jei z priezastis\n";

	int pasirinkimas;
	cin >> pasirinkimas;

	while (pasirinkimas != 1 && pasirinkimas != 2 && pasirinkimas != 3)
	{
		cout << "Blogas pasirinkimas, bandykite dar karta: ";
		cin >> pasirinkimas;
	}

	cout << "Pasirinkta: " << pasirinkimas;
}

Rezultatas 1:

Pasirinkite:
1 - jei x priezastis
2 - jei y priezastis
3 - jei z priezastis
9
Blogas pasirinkimas, bandykite dar karta: 4
Blogas pasirinkimas, bandykite dar karta: 2
Pasirinkta: 2

Rezultatas 2:

Pasirinkite:
1 - jei x priezastis
2 - jei y priezastis
3 - jei z priezastis
1
Pasirinkta: 1

Rezultatas 3:

Pasirinkite:
1 - jei x priezastis
2 - jei y priezastis
3 - jei z priezastis
0
Blogas pasirinkimas, bandykite dar karta: 0
Blogas pasirinkimas, bandykite dar karta: 0
Blogas pasirinkimas, bandykite dar karta: 0
Blogas pasirinkimas, bandykite dar karta: 0
Blogas pasirinkimas, bandykite dar karta: 8
Blogas pasirinkimas, bandykite dar karta: 6
Blogas pasirinkimas, bandykite dar karta: 3
Pasirinkta: 3

# Užduotys

# Užduotis 1

Išveskite visus skaičius nuo 1 iki 20.

# Užduotis 2

Išveskite visus skaičius nuo 1 iki 50. Prie kiekvieno lyginio skaičiaus parašykite žodį "lyginis", o prie kiekvieno nelyginio – "nelyginis".

# Užduotis 3

Išveskite visus skaičius nuo 1 iki 100, kiekvieną skaičių atskiriant kableliu, bei nekeliant skaičių į naujas eilutes.

# Užduotis 4

Išveskite visus skaičius nuo 25 iki 50. Vietoj skaičių, kurie dalinasi iš 3 išveskite tekstą "dalinasi iš 3".

# Užduotis 5

Iš skaičių nuo 1 iki 100, raskite visų lyginių ir visų nelyginių skaičių sumas. Naudokite tą patį ciklą abiems šiems veiksmams.

# Užduotis 6

Išveskite 10 atsitiktinių skaičių, raskite jų sumą.

# Užduotis 7

Išvedinėkite visus skaičius nuo 1 iki tol kol pasitaikys skaičius, kuris dalinasi iš 3 ir iš 5.

# Užduotis 8

Nekeliant į atskiras eilutes, o atskiriant kableliu išveskite 100 atsitiktinių skaičių. Raskite visų jų sumą ir vidurkį.

# Užduotis 9

Raskite visų skaičių nuo 1 iki 10 sandaugą. Išveskite tik atsakymą, neišvedant pačių skaičių.

# Užduotis 10

Išveskite skaičius nuo 1 iki 50. Šalia skaičiaus parašykite iš kokių skaičių (1-9) jis dalinasi. Pavyzdžiui:

Skaičius 2 dalinasi iš: 2
Skaičius 3 dalinasi iš: 3
Skaičius 4 dalinasi iš: 2 4
...

# Užduotis 11

Liepkite vartotojui įvedinėti bet kokius skaičius. Vykdykite įvedinėjimą iki kol įvestas skaičius bus lygus 0. Raskite įvestų skaičių sumą.

# Užduotis 12

Išveskite atsitiktinį kiekį atsitiktinių skaičių.

# Užduotis 13 (sudėtingesnė)

Sukurkite skaičiuotuvą, kuris vartotojui leistų atlikinėti tiek skaičiavimų kiek jis nori ir tokių skaičiavimų (suma, skirtumas, sandauga, dalmuo) kokių jis nori.

Tokios programos veikimo pavyzdys:

Ar norite atlikti skaičiavimus (t/n)? t
Įveskite skaičiavimą (skaičių, veiksmą, skaičių): 5 + 3
Atsakymas: 8

Ar norite atlikti skaičiavimus (t/n)? t
Įveskite skaičiavimą (skaičių, veiksmą, skaičių): 4 * 3
Atsakymas: 12

Ar norite atlikti skaičiavimus (t/n)? n
Programa baigė savo darbą.

Čia pateiktas tik pavyzdinis veikimas, kas reiškia, kad galima programą realizuoti ir kitaip. Pavyzdžiui, leidžiant suvesti skaičius ir tuomet dar papildomai užklausinėjant kokius veiksmus su tais skaičiuoti arba grįžtant prie naujų skaičių įvedimo.

# Ciklas do while

# Apie ciklą do while

Šis ciklas yra labai panašus į while ciklą, skiriasi tik atliekamų veiksmų eiliškumas. Ciklas while pirmiausiai tikrina ar sąlyga jam yra tinkama ir tuomet vykdo kodą. O ciklas do while pirma įvykdo kodą ir tik tada patikrina sąlyga ar jam reikia dar kartą vykdyti kodą.

# Ciklo do while sintaksė

do {
    // kodas
} while (sąlyga);
  • kodas - bus įvykdomas norimas kodas bent vieną kartą visada, bei dar vykdomas jei sąlyga bus teisinga (grąžins true).
  • sąlyga - tai kas atsakys ar ciklas turi dar kartą kartoti nurodytą kodą, apsirašo taip pat kaip if sąlygoje.

# Pavyzdžiai

# Pavyzdys 1

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 0;

	do
	{
		cout << skaicius << endl;
		skaicius++;
	} while (skaicius < 10);
}

Rezultatai:

0
1
2
3
4
5
6
7
8
9

# Pavyzdys 2

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 1;

	do
	{
		cout << skaicius << endl;
		skaicius++;
	} while (skaicius % 15 != 0);
}

Rezultatai:

1
2
3
4
5
6
7
8
9
10
11
12
13
14

# Pavyzdys 3

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 1;

	do
	{
		cout << skaicius << ", ";
		skaicius++;
	} while (skaicius < 100);
}

Rezultatai:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 

# Pavyzdys 4

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 1;
	int suma = 0;

	do
	{
		suma += skaicius;
		skaicius++;
	} while (skaicius <= 100);

	cout << "skaiciu [1-100] suma: " << suma;
}

Rezultatai:

skaiciu [1-100] suma: 5050

# Pavyzdys 5

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int skaicius = 20;

	do
	{
		if (skaicius % 3 == 0)
		{
			cout << "Skaicius " << skaicius << " dalinasi is 3" << endl;
		}
		else
		{
			cout << skaicius << endl;
		}
		skaicius--;
	} while (skaicius > 0);
}

Rezultatai:

20
19
Skaicius 18 dalinasi is 3
17
16
Skaicius 15 dalinasi is 3
14
13
Skaicius 12 dalinasi is 3
11
10
Skaicius 9 dalinasi is 3
8
7
Skaicius 6 dalinasi is 3
5
4
Skaicius 3 dalinasi is 3
2
1

# Pavyzdys 6

Kodas:

#include <iostream>
using namespace std;

int main()
{
	bool testi = true;
	char pasirinkimas;

	do
	{
		cout << "Cia kazkokie norimi veiksmai" << endl;
		cout << "Testi? (t/n)" << endl;

		cin >> pasirinkimas;

		if (pasirinkimas != 't')
		{
			testi = false;
		}
	} while (testi);
}

Rezultatas 1:

Cia kazkokie norimi veiksmai
Testi? (t/n)
t
Cia kazkokie norimi veiksmai
Testi? (t/n)
t
Cia kazkokie norimi veiksmai
Testi? (t/n)
t
Cia kazkokie norimi veiksmai
Testi? (t/n)
t
Cia kazkokie norimi veiksmai
Testi? (t/n)
n

Rezultatas 2:

Cia kazkokie norimi veiksmai
Testi? (t/n)
n

# Pavyzdys 7

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int pasirinkimas;

	do
	{
		cout << "Pasirinkite is:" << endl
			<< "1 - x dalykas" << endl
			<< "2 - y dalykas" << endl;
		cin >> pasirinkimas;

		if (pasirinkimas < 1 || pasirinkimas > 2)
		{
			cout << "Blogai ivestas skaicius" << endl;
		}
	} while (pasirinkimas < 1 || pasirinkimas > 2);

	cout << "Pasirinkimas: " << pasirinkimas;
}

Rezultatas 1:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
1
Pasirinkimas: 1

Rezultatas 2:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
2
Pasirinkimas: 2

Rezultatas 3:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
7
Blogai ivestas skaicius
Pasirinkite is:
1 - x dalykas
2 - y dalykas
-4
Blogai ivestas skaicius
Pasirinkite is:
1 - x dalykas
2 - y dalykas
3
Blogai ivestas skaicius
Pasirinkite is:
1 - x dalykas
2 - y dalykas
2
Pasirinkimas: 2

# Pavyzdys 8

Kodas:

#include <iostream>
using namespace std;

int main()
{
	int pasirinkimas;

	do
	{
		cout << "Pasirinkite is:" << endl
			<< "1 - x dalykas" << endl
			<< "2 - y dalykas" << endl;
		cin >> pasirinkimas;

		if (pasirinkimas != 1 && pasirinkimas != 2)
		{
			cout << "Blogai ivestas skaicius" << endl;
		}
	} while (pasirinkimas != 1 && pasirinkimas != 2);

	cout << "Pasirinkimas: " << pasirinkimas;
}

Rezultatas 1:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
1
Pasirinkimas: 1

Rezultatas 2:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
-5
Blogai ivestas skaicius
Pasirinkite is:
1 - x dalykas
2 - y dalykas
7
Blogai ivestas skaicius
Pasirinkite is:
1 - x dalykas
2 - y dalykas
1
Pasirinkimas: 1

Rezultatas 3:

Pasirinkite is:
1 - x dalykas
2 - y dalykas
2
Pasirinkimas: 2

# Užduotys

# Užduotis 1

Išveskite visus skaičius nuo 1 iki pirmojo, kuris dalinasi iš 17.

# Užduotis 2

Išveskite visus skaičius nuo 1 iki pirmojo, kuris dalinasi iš 100. Vietoj kiekvieno skaičiaus, kuris dalinasi iš 5 išveskite tekstą "skaičius dalinasi iš 5".

# Užduotis 3

Išveskite visus lyginius skaičius nuo 1 iki pirmojo, kuris dalinasi iš 20. Raskite visų šių išvestų skaičių sumą.

# Užduotis 4

Išveskite visus nelyginius skaičius nuo 1 iki 50. Raskite šių skaičių sumą ir vidurkį.

# Užduotis 5

Išvedinėkite atsitiktinius skaičius iki kol rasite skaičių, kuris dalinasi iš 3.

# Užduotis 6

Leiskite vartotojui atlikinėti skaičiavimus tol kol jis norės.

Tokios galimos programos veikimo pavyzdys:

Įveskite norimą atlikti skaičiavimą (skaičius, veiksmas, skaičius):
5 + 3
Atsakymas: 8

Ar dar skaičiuoti (t/n)? t

Įveskite norimą atlikti skaičiavimą (skaičius, veiksmas, skaičius):
8 * 2
Atsakymas: 16

Ar dar skaičiuoti (t/n)? n