Professional Documents
Culture Documents
Lab 3instructiuni Repetitive
Lab 3instructiuni Repetitive
Instructiuni repetitive
Instructiuni repetitive
a) cu un numar cunoscut de pasi: (FOR)
b) conditionate
i) cu conditie anterioara: (WHILE)
ii) cu conditie posterioara: (DO..WHILE)
#include<iostream>
using namespace std;
int main()
{
int n;
long long S = 0;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
for (int i = 1; i <= n; i++) //i++ este i+=1 este i=i+1 este ++i (ptr. cazul de
fata)
S += i; //S=S+i;
cout << "Suma este: " << S << '\n';
return 0;
}
b) O altă formă de scriere (inițializare în afara instructiunii, test sub formă aritmetică și incrementare în
interiorul instrucțiunii ):
#include<iostream>
using namespace std;
int main()
{
int n;
long long S = 0;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
int i = 1;
for (;i-(n+1);)
S += i++; //{S=S+i; i++;}
cout << "Suma este: " << S << '\n';
return 0;
}
int main()
{
int n;
long long S = 0;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
for (int i = 1; i <= n; i+=2)
S += i;
cout << "Suma este: " << S << '\n';
return 0;
}
int main()
{
int n;
long long S = 0;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
for (int i = n; i >=1; i--)
S += i;
cout << "Suma este: " << S << '\n';
return 0;
}
int main()
{
int n;
long long S = 0;
cout << "Dati n: ";
cin >> n;
int i = 1;
while (i <= n)
S += i++; //{S = S + i; i++;}
cout << "Suma este: " << S << '\n';
return 0;
}
f) Varianta prin utlizarea lui do..while. Se va face și o testare asupra faptului dacă valoarea n este corect
introdusă, adică, o valoare mai mare sau egală decât 1.
#include<iostream>
using namespace std;
int main()
{
int n;
long long S = 0;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
int i = 1;
do
S += i++;
while (i <= n);
Aplicația 2. Se citeste un numar întreg, strict pozitiv. Sa se determine dacă numarul citit este
sau nu numar prim.
a) varianta 1
#include<iostream>
using namespace std;
int main()
{
int x;
int ok; //daca ok va fi 1, numarul este prim, daca este 0, numarul nu este prim
cin >> x;
x = abs(x);
if (x == 2)
ok = 1;
else
if (x == 0 || x == 1 || x % 2 == 0)
ok = 0;
else
{
ok = 1; //pornim de la premiza ca numarul citit este prim
for (int i = 3; i <= sqrt(x) && ok == 1; i += 2)
if (x % i == 0)
ok = 0;
}
if (ok) //ok!=0
cout << "Numarul este prim\n";
else
cout << "Numarul nu este prim\n";
return 0;
}
b) varianta 2
#include<iostream>
using namespace std;
int main()
{
int x;
cin >> x;
x = abs(x);
if (x == 2)
{
cout << "Numarul este prim\n";
return 1; //iese fortat din program
}
if (x == 0 or x == 1 or x % 2 == 0)
{
cout << "Numarul nu este prim\n";
return 2;
}
bool ok = true; //pornim de la premiza ca numarul citit este prim
for (int i = 3; i <= sqrt(x); i += 2)
if (x % i == 0)
{
ok = 0; //ok=false;
break; //iese fortat din structura
}
if (ok) //ok!=0
cout << "Numarul este prim\n";
else
cout << "Numarul nu este prim\n";
return 0;
}
int main()
{
int n;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
int S = 0, f;
for (int i = 1; i <= n; i++)
{
f = 1;
for (int j = 1; j <= i; j++)
f *= j;
S += f;
}
FOR – WHILE
#include<iostream>
using namespace std;
int main()
{
int n;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
int S = 0, f;
for (int i = 1; i <= n; i++)
{
f = 1;
int j = 1;
while (j <= i)
f *= j++;
S += f;
}
cout << "Valoarea expresiei este: " << S << '\n';
return 0;
}
WHILE – WHILE
#include<iostream>
using namespace std;
int main()
{
int n;
do {
cout << "Dati n: ";
cin >> n;
} while (n < 1);
int S = 0, f;
int i = 1;
while (i <= n)
{
f = 1;
int j = 1;
while (j <= i)
f *= j++;
S += f;
i++;
}
cout << "Valoarea expresiei este: " << S << '\n';
return 0;
}
Aplicația 4. Se citesc valori intregi, până la întâlnirea valorii 0. Să se realizeze produsul valorilor
întâlnite.
Varianta de lucru WHILE
#include<iostream>
using namespace std;
int main()
{
int n;
int P = 1;
int main()
{
int n;
int P = 1;
do {
cout << "Dati n: ";
cin >> n;
if (n)
P *= n;
} while (n != 0);
cout << "Valoarea expresiei este: " << P << '\n';
system("pause");
return 0;
}
Varianta de lucru FOR
#include<iostream>
using namespace std;
int main()
{
int n;
int P = 1;
Aplicația 5. Se citește un text ce contine diverse mesaje. Citirea se va face pana la întâlnirea
caracterului ‚.’, cerându‐se contorizarea apariției fiecarei vocale și a tuturor consoanelor
întâlnite.
#include<iostream>
using namespace std;
int main()
{
char k; //caracterul ce va fi citit succesiv
int a, e, i, o, u, c;
a = e = i = o = u = c = 0;
cout << "Dati un mesaj: ";
do {
cin >> k;
switch (k)
{
case 'a':
case 'A': a++; break;
case 'e':
case 'E': e++; break;
case 'i':
case 'I': i++; break;
case 'o':
case 'O': o++; break;
case 'u':
case 'U': u++; break;
default:
if ((k > 'a' and k <= 'z') or (k > 'A' and k <= 'Z'))
c++;
}
} while (k!='.');
return 0;
}
Aplicația 6. Se citește un număr întreg de la tastatură. Se vor afisa piramide, de forma celor de
mai jos.
Presupunem numărul ca fiind 5, piramidele vor fi:
1
12
123
1234
12345
1234
123
12
1
respectiv,
1
21
321
4321
54321
4321
321
21
1
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Dati numarul: ";
cin >> n;
cout << '\n';
/*
1
1 2
1 2 3
1 2 3 4
1 2 3
1 2
1
*/
/*
1
2 1
3 2 1
4 3 2 1
3 2 1
2 1
1
*/
return 0;
}
Aplicația 7. Se citesc două numere întregi. Sa se calculeze catul si restul impartirii lui a la b,
fara a folosi operatori pentru cât și rest.
Exemplu 1: a=9, b=3
a b i
9 3 0
6 3 1
3 3 2
0 3 3
a b i
13 4 0
9 4 1
5 4 2
1 4 3
int main()
{
int a, b, i;
cout << "Dati a: ";
cin >> a;
cout << "Dati b: ";
cin >> b;
for (i = 0; a >= b; i++)
a = a - b;
cout << "Catul este: " << i << '\n';
cout << "Restul este: " << a << '\n';
system("pause");
return 0;
}
*
***
*****
***
*
cc
ccc
....
ccc...c
....
ccc
cc
21. Se citește numărul natural n, şi două caractere c şi d. Să se afișeze următorul pătrat, format
din n linii şi n coloane:
ccc...cc
cdd...dc
....
cdd...dc
ccc...cc
22. Se citește numărul natural impar n, şi două caractere c şi d. Să se afișeze următorul pătrat,
format din n linii şi n coloane, în care cele două caractere alternează:
cdc...dc
dcd...cd
....
dcd...cd
cdc...dc