Documente Academic
Documente Profesional
Documente Cultură
-> clasificare:
-> cu nr nedeterminat de pasi (ciclari)
-> cu cond la inceput: while
-> cu cond la sfarsit: do - while
while (conditie)
grup_de_instruct;
do
grup_de_instruct;
while (conditie);
-> functionarea:
Pasul 1 Se executa grupul de instructiuni
Pasul 2 Se stabileste valoarea de adevar a conditiei
Pasul 3 Cazul 1 - conditia este falsa - se iese din bucla
Cazul 2 conditia este adevarata
P3.1 Se revine la Pasul 1
-> aplicatii:
- prelucrari asupra cifrelor unui numar natural
-> suma sau produsul cifrelor
-> cea mai mare / mica cifra a unui numar natural
-> oglinditul unui numar natural / intreg
-> testul de nr palindrom pentru un numar natural / intreg
-> cel mai mare divizor comun a doua numere naturale / intregi
-> cel mai mic multiplu comun a doua numere naturale / intregi
-> aducerea unei gracti la forma ireductibila
-> de cate ori se imparte a la b
-> preluarea corecta a informatiei
-> constructia unui meniu elementar
int x = 8;
while(x > 0)
{
cout << x << " ";
x -= 3;
}
x x > 0
8 -> 5 8 > 0 - a
5 -> 2 5 > 0 - a
2 -> -1 2 > 0 - a
-1 -1 > 0 - f
int i = 3;
while(i < 24)
i *= 2;
cout << 2 * i + 1 << endl;
i i < 24
3 -> 6 3 < 24 - a
6 -> 12 6 < 24 - a
12 -> 24 12 < 24 - a
24 24 < 24 - f
-> se afiseaza: 49
-> nr ciclari: 3
-> val fin: i = 24
int i = 4;
while (i > 1)
{
cout << i << " ";
i -= 1;
}
i i > 1
4 -> 3 4 > 1 - a
3 -> 2 3 > 1 - a
2 -> 1 2 > 1 - a
1 1 > 1 - f
int a = 0, b = 20;
while (a <= b)
{
a += 3;
b -= 3;
}
cout << a * b << endl;
a b a <= b
0 -> 3 20 -> 17 0 <= 20 - a
3 -> 6 17 -> 14 3 <= 17 - a
6 -> 9 14 -> 11 6 <= 14 - a
9 -> 12 11 -> 8 9 <= 11 - a
12 8 12 <= 8 - f
-> ce se afiseaza: 96 = 12 * 8
-> nr ciclari: 4
-> valorile finale: a = 12 si b = 8
int a = 0, b = 20;
while (a <= b)
a += 3;
b -= 3;
cout << a * b << endl;
a b a <= b
0 -> 3 20 0 <= 20 - a
3 -> 6 20 3 <= 20 - a
6 -> 9 20 6 <= 20 - a
9 -> 12 20 9 <= 20 - a
12 -> 15 20 12 <= 20 - a
15 -> 18 20 15 <= 20 - a
18 -> 21 20 18 <= 20 - a
21 20 21 <= 20 - f
-> 17
int t = 31;
while (t != 0)
{
cout << t << " ";
t = t / 2;
}
t t != 0
31 -> 15 31 != 0 - a
15 -> 7 15 != 0 - a
7 -> 3 7 != 0 - a
3 -> 1 3 != 0 - a
1 -> 0 1 != 0 - a
0 0 != 0 - f
int x = 0, s = 0;
while (x <= 4)
{
if (x % 2 == 1)
s += x;
x += 1;
}
x s x <= 4 x % 2 == 1
0 -> 1 0 0 <= 4 - a 0 % 2 == 1 - f
1 -> 2 0 -> 1 1 <= 4 - a 1 % 2 == 1 - a
2 -> 3 1 2 <= 4 - a 2 % 2 == 1 - f
3 -> 4 1 -> 4 3 <= 4 - a 3 % 2 == 1 - a
4 -> 5 4 4 <= 4 - a 4 % 2 == 1 - f
5 4 5 <= 4 - f
-> ce se afiseaza: -
-> nr ciclari: 5
-> valorile finale: x = 5, s = 4
int u = 3, c = 0;
while (u != 1)
{
if (u % 2 == 0)
u = u / 2;
else
u = 3 * u + 1;
c += 1;
}
-> se intocmeste urmatorul tabel:
u c u != 1 u % 2 == 0
3 -> 10 0 -> 1 3 != 1 - a 3 % 2 == 0 - f
10 -> 5 1 -> 2 10 != 1 - a 10 % 2 == 0 - a
5 -> 16 2 -> 3 5 != 1 - a 5 % 2 == 0 - f
16 -> 8 3 -> 4 16 != 1 - a 16 % 2 == 0 - a
8 -> 4 4 -> 5 8 != 1 - a 8 % 2 == 0 - a
4 -> 2 5 -> 6 4 != 1 - a 4 % 2 == 0 - a
2 -> 1 6 -> 7 2 != 1 - a 2 % 2 == 0 - a
1 7 1 != 1 - f
-> se afiseaza: -
-> nr ciclari: 7
-> valorile finale: u = 1, c = 7
int k = 3;
while (k != 15)
{
cout << k << " ";
k = 2 * k + 1;
}
k k != 15
3 -> 7 3 != 15 - a
7 -> 15 7 != 15 - a
15 15 != 15 - f
int x = 5, y = 1;
while (x > y)
{
x--;
y++;
}
x y x > y
5 -> 4 1 -> 2 5 > 1 - a
4 -> 3 2 -> 3 4 > 2 - a
3 3 3 > 3 - f
-> se afiseaza: -
-> nr ciclari: 2
-> val fin: x = 3, y = 3
int x = 4, y = 0;
while (x-- != 0)
y++;
cout << y << endl;
x y x-- != 0
4 -> 3 0 -> 1 4 != 0 - a
3 -> 2 1 -> 2 3 != 0 - a
2 -> 1 2 -> 3 2 != 0 - a
1 -> 0 3 -> 4 1 != 0 - a
0 -> -1 4 0 != 0 - f
-> se afiseaza: 4
-> nr ciclari: 4
-> val fin: x = -1, y = 4
int z = -2;
while (1 + ++z != 0)
{
cout << z << " ";
z ++;
}
z 1 + ++z != 0
-2 -> -1 1 + (-1) != 0 - f
-> se afiseaza: -
-> nr ciclari: 0
-> val fin: z = -1
float r = 2 / 3;
while (r++ < 2)
r++;
cout << r << endl;
r r++ < 2
0 -> 1 -> 2 0 < 2 - a
2 -> 3 2 < 2 - f
se afiseaza: 3
nr ciclari: 1
val fin: r = 3
int y = 6;
while (y != 0)
{
if (y % 2 == 1)
cout << y << " ";
y -= 2;
}
y y != 0 y % 2 == 1
6 -> 4 6 != 0 - a 6 % 2 == 1 - f
4 -> 2 4 != 0 - a 4 % 2 == 1 - f
2 -> 0 2 != 0 - a 2 % 2 == 1 - f
0 0 != 0 - f
-> se afiseaza: -
-> nr ciclari: 3
-> val fin: y = 6
int z = 5;
while (z != 0)
{
if (z % 6 >= 6)
cout << z << " ";
z -= 1;
}
z z != 0 z % 6 >= 6
5 -> 4 5 != 0 - a 5 % 6 >= 6 - f 5 % 6 = 5
4 -> 3 4 != 0 - a 4 % 6 >= 6 - f 4 % 6 = 4
3 -> 2 3 != 0 - a 3 % 6 >= 6 - f 3 % 6 = 3
2 -> 1 2 != 0 - a 2 % 6 >= 6 - f 2 % 6 = 2
1 -> 0 1 != 0 - a 1 % 6 >= 6 - f 1 % 6 = 2
0 0 != 0 - f
-> se afiseaza: -
-> nr ciclari: 5
-> valori finale: z = 0
int i = 1;
while (i != 8)
{
cout << i << " ";
i = i * 2 % 7;
}
i i != 8
1 -> 2 1 != 8 - a 1 * 2 % 7 = 2 % 7 = 2
2 -> 4 2 != 8 - a 2 * 2 % 7 = 4 % 7 = 4
4 -> 1 4 != 8 - a 4 * 2 % 7 = 8 % 7 = 1
int i = 1;
while (i != 8)
{
cout << i << " ";
i = i * 3 % 15;
}
i i != 8
1 -> 3 1 != 8 - a 1 * 3 % 15 = 3 % 15 = 3
3 -> 9 3 != 8 - a 3 * 3 % 15 = 9 % 15 = 9
9 -> 12 9 != 8 - a 9 * 3 % 15 = 27 % 15 = 12
12 -> 6 12 != 9 - a 12 * 3 % 15 = 36 % 15 = 6
6 -> 3 6 != 8 - a 6 * 3 % 15 = 18 % 15 = 3
int k = 1;
while (k < 5)
{
cout << k << " ";
k++;
if (k == 4)
k = k - 1;
}
k k < 5 k == 4
1 -> 2 1 < 5 - a 2 == 4 - f
2 -> 3 2 < 5 - a 3 == 4 - f
3 -> 4 -> 3 3 < 5 - a 4 == 4 - a
3 -> 4 -> 3 3 < 5 - a 4 == 4 - a
int r = 1;
while (r < 5)
{
cout << r << " ";
if (r % 2 == 1)
r += 1;
}
r r < 5 r % 2 == 1
1 -> 2 1 < 5 - a 1 % 2 == 1 - a
2 2 < 5 - a 2 % 2 == 1 - f
2 2 < 5 - a 2 % 2 == 1 - f
int i = 1;
while (1) // 1 != 0
{
cout << i << ' ';
i *= 5;
i %= 10;
}
i 1 != 0
1 -> 5 -> 5 a
5 -> 25 -> 5 a
int i = 8;
do
i -= 4;
while (i >= 0);
cout << i << endl;
-> se intocmeste urmatorul tabel:
i i >= 0
8 -> 4 4 >= 0 - a
4 -> 0 0 >= 0 - a
0 -> -4 -4 >= 0 - f
-> se afiseaza: -4
-> nr. ciclari: 3
-> valori finale: i = -4
int x = 0, y = 2;
do
{
x += 2;
y += 1;
}
while (x <= y);
cout << x * y << endl;
x y x <= y
0 -> 2 2 -> 3 2 <= 3 - a
2 -> 4 3 -> 4 4 <= 4 - a
4 -> 6 4 -> 5 6 <= 5 - f
se afiseaza: 30
nr. ciclari: 3
valori finale: x = 6, y = 5
int x = 0;
do
{
if (x % 2 == 1)
x += 2;
else
x++;
}
while (x <= 8);
cout << x << endl;
x x % 2 == 1 x <= 8
0 -> 1 0 % 2 == 1 - f 1 <= 8 - a
1 -> 3 1 % 2 == 1 - a 3 <= 8 - a
3 -> 5 3 % 2 == 1 - a 5 <= 8 - a
5 -> 7 5 % 2 == 1 - a 7 <= 8 - a
7 -> 9 7 % 2 == 1 - a 9 <= 8 - f
se afiseaza: 9
nr ciclari: 5
val fin: x = 9
int i = 0;
do
if (i % 2 == 1)
i += 2;
else
i++;
while (i <= 6);
i i % 2 == 1 i <= 6
0 -> 1 0 % 2 == 1 - f 1 <= 6 - a
1 -> 3 1 % 2 == 1 - a 3 <= 6 - a
3 -> 5 3 % 2 == 1 - a 5 <= 6 - a
5 -> 7 5 % 2 == 1 - a 7 <= 6 - f
se afiseaza: -
nr ciclari: 4
valori finale: i = 7
int c = 1;
do {
cout << c << " ";
c = 2;
cout << c << " ";
c--;
}
while (c != 0);
c c != 0
1 -> 2 -> 1 1 != 0
1 -> 2 -> 1 1 != 0
n = 213 -> s = 6
n = 103 -> s = 4
n = 5 -> s = 5
cat timp n != 0
-> c = n % 10
-> n = n / 10
-> s = s + c
- se da: n - nr
- se cere: s - suma cifrelor
#include <iostream>
using namespace std;
int main()
{
int n,c,s;
s=0;
cout<< "nr este: ";
cin>> n;
do
{
c=n%10;
n=n/10;
s=s+c;
} while(n!=0);
cout<< "suma este: " <<s <<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n,c,s;
s=0;
cout<< "nr este: ";
cin>> n;
while(n!=0)
{
c=n%10;
n=n/10;
s=s+c;
}
cout<< "suma este: " <<s <<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n,s;
s=0;
cout<< "nr este: ";
cin>> n;
while(n!=0)
{
s = s+ n % 10;
n = n / 10;
}
cout<< "suma este: " <<s <<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n,p;
p=1;
cout<< "nr este: ";
cin>> n;
while(n!=0)
{
p = p * (n % 10);
n = n / 10;
}
cout<< "produsul este: " <<p <<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n,p;
p=1;
cout<< "nr este: ";
cin>> n;
do
{
p = p * (n % 10);
n = n / 10;
}
while(n != 0);
cout<< "produsul este: " <<p <<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n, c, s;
s = 0;
cout << "nr este: ";
cin >> n;
while(n != 0)
{
c = n % 10;
n = n / 10;
if (c % 2 == 0)
s += 1;
}
cout << "nr cifre pare: " << s << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n, c, s;
s = 0;
cout << "nr este: ";
cin >> n;
while(n != 0)
{
c = n % 10;
n = n / 10;
if (c % 2 == 0)
s += 1;
}
if (s != 0)
cout << "nr cifre pare: " << s << endl;
else
cout << "fara cifre pare!" << endl;
return 0;
}
!no - variabila in care se construieste oglinditul, are valoare
initiala, no = 0
no = 10 * no + c
n = 123 c = 3 n = 12 no = 10 * 0 + 3 = 3
n = 12 c = 2 n = 1 no = 10 * 3 + 2 = 32
n = 1 c = 1 n = 0 no = 10 * 32 + 1 = 321
n = 0 c = 0 n = 0 no = 321
c = n % 10 n = n / 10
#include <iostream>
using namespace std;
int main()
{
int n, c, no;
no = 0;
cout << "nr este: ";
cin >> n;
while(n != 0)
{
c = n % 10;
n = n / 10;
no = 10 * no + c;
}
cout << "oglinditul: " << no << endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int n, c, no, nc;
no = 0;
cout << "nr este: ";
cin >> n;
nc = n;
while(n != 0)
{
c = n % 10;
n = n / 10;
no = 10 * no + c;
}
cout << "oglinditul: " << no << endl;
if (nc == no)
cout << "este paindrom!" << endl;
else
cout << "nu este palindrom!" << endl;
return 0;
}
12 = 14 * 0 + 12
14 = 12 * 1 + 2
12 = 2 * 6 + 0
cmmdc(12,14) = 2
m = 24
n = 16
24 = 16 * 1 + 8
16 = 8 * 2 + 0
cmmdc(24, 16) = 8
op care se repeta:
-> r = m % n
-> m = n
-> n = r
cat timp (m % n != 0)
#include <iostream>
using namespace std;
int main ()
{
int m, n, r;
cout << "primul nr: ";
cin >> m;
cout << "al doilea nr: ";
cin >> n;
if (m != 0 && n != 0)
{
while (m % n != 0)
{
r = m % n;
m = n;
n = r;
}
cout << "cmmdc: " << n << endl;
}
return 0;
}
cmmdc(x,y,z) = cmmdc(cmmdc(x,y),z)
x * y = cmmdc(x,y) * cmmmc(x,y).