Sunteți pe pagina 1din 8

//6.

Sa se genereze toate numerele naturale de 3 cifre


//pentru care cifra zecilor este egala cu diferenta cifrelor
//sutelor si unitatilor.

//Un prim mod de abordare ar fi urmatorul: generam toate numerele


//de 3 cifre, apoi pentru fiecare numar identificam cifrele acestuia si
//verificam conditia data. Daca conditia este verificata, afisam numarul

#include <iostream>

using namespace std;

int main()
{
int n, z, s, u;
//declaram 4 varivile de tip intreg: numarul de 3 cifre (n)
//si cifrele componente ale acestuia (s - sute, z - zeci, u- unitati)

for (n=100; n<=999; n++)


{
u = n%10;
z = (n/10)%10;
s = n/100;
if (z==s-u)
cout<<n<<" ";
}
}

//6. Sa se genereze toate numerele naturale de 3 cifre


//pentru care cifra zecilor este egala cu diferenta cifrelor
//sutelor si unitatilor.

//O alta modalitate de abordare ar fi urmatoarea: generam cifrele


//sutelor si unitatilor, apoi calculam cifra zecilor astfel incat
//conditia sa fie indeplinita

#include <iostream>

using namespace std;

int main()
{
int n, z, s, u;
for (s=1; s<=9; s++)
for (u=0; u<=s; u++)
//cu cifra unitatilor mergem doar pana la s,
//pentru a nu obtine un z negativ
{
z = s - u;
n = s*100 + z*10 + u;
cout<<n<<" ";
}
}
//7. Sa se genereze toate numerele naturale de 3 cifre
//pentru care cifra sutelor este egala cu suma cifrelor
//zecilor si unitatilor.

#include <iostream>

using namespace std;

int main()
{
int n, z, s, u;
for (z=0; z<=9; z++)
for (u=0; u<=9-z; u++)
//cu cifra unitatilor mergem doar pana la 9-z, pentru a nu obtine un s>10
{
s = z + u;
if (s!=0)
{
n = s*100 + z*10 + u;
cout<<n<<" ";
}
}
}

//8. Sa se citeasca cate un numar intreg, pana la intalnirea


//numarului 90. Pentru fiecare numar sa se afiseze un mesaj care indica
//daca numarul este pozitiv sau negativ. Sa se afiseze cel mai mic
//numar din sir.

#include <iostream>

using namespace std;

int main()
{
int n, min;

cout<<"Introduceti un numar: ";


cin>>n;

min = n; //primul numar introdus este si minimul


while (n!=90)
{
if (n<min)
min = n;

if (n<0)
cout<<"negativ\n";
else
cout<<"pozitiv\n";

cout<<"\nIntroduceti un numar: ";


cin>>n;
}
cout<<"\nCel mai mic numar introdus este: "<<min;
}
//9. Sa se scrie un program care afiseaza literele mari
//ale alfabetului in ordine crescatoare, iar literele mici
//in ordine descrescatoare.

#include <iostream>

using namespace std;

int main()
{
cout<<"Literele mari afisate in ordine crescatoare:\n";
for (char lit='A'; lit<='Z'; lit++)
cout<<lit<<" ";

cout<<'\n';
cout<<"\nLiterele mici afisate in ordine descrescatoare:\n";
for (char lit='z'; lit>='a'; lit--)
cout<<lit<<" ";
}

//10. Sa se scrie un program care genereaza toate numerele perfecte


//pana la o limita data, LIM. Un numar perfect este egal cu suma
//divizorilor lui, inclusiv 1 (exemplu: 6=1+2+3).

#include <iostream>

using namespace std;

int main()
{
int lim, div;

cout<<"Introduceti limita: ";


cin>>lim;

for (int n=1; n<=lim; n++)


{
//calculul sumei divizorilor
div=0;
for (int i=1; i<=n/2; i++)
if (n%i==0)
div+=i;
//daca numarul este egal cu suma divizorilor, il afisam
if (n==div)
cout<<n<<'\n';
}
}
//11. Se citesc cate 3 numere reale, pana la intalnirea numerelor
//9, 9, 9. Pentru fiecare triplet de numere citit,
//sa se afiseze maximul.

#include <iostream>

using namespace std;

int main()
{
float a, b, c, max;

cout<<"Introduceti primul numar: ";


cin>>a;
cout<<"Introduceti al doilea numar: ";
cin>>b;
cout<<"Introduceti al treilea numar: ";
cin>>c;

while (a!=9 || b!=9 || c!=9)


{
if (a>b && a>c)
max = a;
else if (b>c)
max = b;
else
max = c;

cout<<"Numarul maxim este: "<<max<<'\n';

cout<<"\nIntroduceti primul numar: ";


cin>>a;
cout<<"Introduceti al doilea numar: ";
cin>>b;
cout<<"Introduceti al treilea numar: ";
cin>>c;
}
}
//12. Se citeste cate un caracter pana la intalnirea caracterului @.
//Sa se afiseze numarul literelor mari, numarul literelor mici si
//numarul cifrelor citite, precum si care este cea mai mare
//(lexicografic) litera mare, litera mica si cifra introdusa.

#include <iostream>

using namespace std;

//pentru a fiecare caracter citit se testeaza daca este mai mare


//decat caracterul 'a' si mai mic decat caracterul 'z' pentru literele
//mici, 'A' si 'Z' pentru litere mari, respectiiv '0' si '9' pentru cifre
int main()
{
char c,
maxLM=0, //ce-a mai mare litera mare
maxlm=0, //ce-a mai mare litera mica
maxc=0; //ce-a mai mare cifra
int nrLM=0, //numarul de litere mari
nrlm=0, //numarul de litere mici
nrc=0; //numarul de cifre

cout<<"Introduceti caracterul: ";


cin>>c;

while (c!='@')
{
if (c>='A' && c<='Z')
{
nrLM++;
if (c>maxLM)
maxLM = c;
}
if (c>='a' && c<='z')
{
nrlm++;
if (c>maxlm)
maxlm = c;
}
if (c>='0' && c<='9')
{
nrc++;
if (c>maxc)
maxc = c;
}

cout<<"\nIntroduceti caracterul: ";


cin>>c;
}

cout<<"\n\nAti introdus: "<<nrLM<<" litere mari,\n";


cout<<nrlm<<" litere mici si "<<nrc<<" cifre.\n ";
cout<<"\nCe-a mai mare litera mare introdusa: "<<maxLM;
cout<<"\nCe-a mai mare litera mica introdusa: "<<maxlm;
cout<<"\nCe-a mai mare cifra introdusa: "<<maxc;
}
//12. Se citeste cate un caracter pana la intalnirea caracterului @.
//Sa se afiseze numarul literelor mari, numarul literelor mici si
//numarul cifrelor citite, precum si care este cea mai mare
//(lexicografic) litera mare, litera mica si cifra introdusa.

#include <iostream>

using namespace std;


//pentru a nu mai testa caracterul citit daca este mai mare decat
//caracterul 'a' si mai mic decat caracterul 'z' pentru literele mici,
//'A' si 'Z' pentru litere mari, respectiiv '0' si '9' pentru cifre
//putem utiliza urmatoarele functii:
// isupper(c) testeaza daca caracterul c este o litera mare
// islower(c) testeaza daca caracterul c este o litera mica
// isdigit(c) testeaza daca caracterul c este o cifra
int main()
{
char c,
maxLM=0, //ce-a mai mare litera mare
maxlm=0, //ce-a mai mare litera mica
maxc=0; //ce-a mai mare cifra
int nrLM=0, //numarul de litere mari
nrlm=0, //numarul de litere mici
nrc=0; //numarul de cifre

cout<<"Introduceti caracterul: ";


cin>>c;
while (c!='@')
{
if (isupper(c))
{
nrLM++;
if (c>maxLM)
maxLM = c;
}
if (islower(c))
{
nrlm++;
if (c>maxlm)
maxlm = c;
}
if (isdigit(c))
{
nrc++;
if (c>maxc)
maxc = c;
}

cout<<"\nIntroduceti caracterul: ";


cin>>c;
}

cout<<"\n\nAti introdus: "<<nrLM<<" litere mari,\n";


cout<<nrlm<<" litere mici si "<<nrc<<" cifre.\n ";
cout<<"\nCe-a mai mare litera mare introdusa: "<<maxLM;
cout<<"\nCe-a mai mare litera mica introdusa: "<<maxlm;
cout<<"\nCe-a mai mare cifra introdusa: "<<maxc;
}
//13. Se citesc cate 2 numere intregi, pana la intalnirea
//perechii de numere 9, 9. Pentru fiecare pereche de numere citite,
//sa se afiseze cel mai mare divizor comun al acestora.

#include <iostream>

using namespace std;

int main()
{
int x, y, x1, y1, cmmdc;

cout<<"Introduceti primul numar:";


cin>>x;
cout<<"Introduceti al doilea numar:";
cin>>y;

while (x!=9 || y!=9)


{
x1=x;
y1=y;
while (x1 != y1)
{
if ( x1 > y1 )
x1 -= y1;
else
y1 -= x1;
}
cmmdc=x1;

cout<<"C.m.m.d.c. al numerelor "<<x<<" si "<<y<<" este: ";


cout<<cmmdc;

cout<<"\n\nIntroduceti primul numar:"; cin>>x;


cout<<"Introduceti al doilea numar:"; cin>>y;
}
}
//14. Sa se citeasca un sir de numere reale, pana la intalnirea
//numarului 800 si sa se afiseze valoarea minima introdusa,
//suma si produsul elementelor sirului.

#include <iostream>

using namespace std;

int main()
{
float nr, min, s=0, p=1;

cout<<"Introduceti un numar: ";


cin>>nr;

min = nr; //primul numar introdus este si minimul


while (nr != 800)
{
if (min>nr)
min = nr;
s += nr;
p *= nr;

cout<<"Introduceti un numar: ";


cin>>nr;
}

cout<<"\n\nCel mai mic numar introdus este: "<<min;


cout<<"\nSuma numerelor introduse este: "<<s;
cout<<"\nProdusul numerelor introduse este: "<<p;
}