Documente Academic
Documente Profesional
Documente Cultură
//Cifrele unui nr
/*
* Primul nr prim este 2
* Folosim conditia while(n>0) atunci cand ne dorim sa parcurgem toate cifrele
numarului
* Folosim conditia while(n>9) atunci cand ne dorim sa aflam prima cifra a numarului
* Pt a parcurge cifrele unui nr flosim intotdeauna while
*/
/*Testarea daca un nr este prim
-Se ia o variabila k=1 presupunand initial ca nr este prim
-Parcurgem cu un for toti divizorii numarului
-Daca gasim un divizor al numarului k=0
-Fa final daca k a ramas 1 inseamna ca nr este prim
*/
/*Calcularea cmmdc
-Se foloseste while avand urmatoarea conditie ( while(a!=b) )
-Se fac scaderi succesive de forma a-b sau b-a pana cand nr a si b devin egale
if(a>b)
a=a-b;
else
b=b-a;
-Cmmdc este la final fie a fie b cele doua nr devenind egale
cout<<a;
*/
/*Calcularea cmmmc
-Pt a calcula cmmmc tinem cont de urmatoarea formula
(cmmmc*cmmdc=a*b)=>cmmmc=(a*b)/cmmdc
*/
/*Inversul unui nr
* Pt a calcula inversul unui nr tinem cont de urmatorii pasi
* -Ne definim o variabila numita inv =0 care va retine inversul numaruli
* -Parcurgem cifrele numarului de la final catre inceput iar inverstul se formeaza
respecatand relatia
* -inv =inv*10+n%10;
*/
/*Verif daca un nr este palindrom
-Se calculeaza inversul numarului
-La final se verifica daca nr este egal cu inversul sau
*/
/*Creearea unui nr cu o anumita proprietate
-Daca ni se da un nr si ni se cere sa inlocuim cifrele acestuia care indeplinesc o
anumita proprietate(de exemplu cifrele pare) procedam astfel
a)Ne definim o variabila x=0 care va retine noul nr
b)Parcurgem cifrele numarului cu while n>0 si inlocuim cifrele acestuia in x
folosindune de relatia x=x*10+( cifra nodificata )
c)La final calculam inversul lui x
*/
/*Parcurgerea unui interval [a,b] si selectarea numerelor din interval care au o
anumita proprietate
Parcurgerea intervalului se face folosind
for(int i=a;i<b;i++)
Numerele din interval vor fi date de i si asupra lui i se vor pune conditii cu
ajutorul lui if
*/
/*
* Eliminarea cifrelor unui numar cu o anumita proprietate (cifrele pare) si
verificarea daca noul nr este palindrom
* Creem o variabila x care va retine numarul prin eliminarea cifrelor pare
* Pt variabila creata calculam inversul
* Verificam daca inversul este egal cu variabila agreata
*/
int main()
{
int n;
n = 1;
cout << incrementare(n);
}*/
//Var 2
/*#include <iostream>
using namespace std;
void incrementare (int n)
{
cout << n + 2;
}
int main()
{
int n;
n = 1;
incrementare(n);
}*/
Atunci cand facem transmiterea parametrilor prin referinta ,daca acestia sunt
modificati in interiorul fuctiei,modificarea se va face si in programul
principal.Lucru care nu se intampla in
cazul parametrilor prin valoare.
#include <iostream>
using namespace std;
void Interschimbare(int &a, int &b)//Deoarece parametrii sunt transmisi prin
referinta variabilele a si b isi vor schimba valoarea in programul principal
{
int aux;
aux = a;
a = b;
b = aux;
}
int main()
{
int a, b;
a = 1;
b = 3;
Interschimbare(a, b);
cout << "a= " << a << endl;
cout << "b= " << b;
}
#include <iostream>
using namespace std;
int main()
{
int n, i = 2;
cout << "n=";
cin >> n;
while (n > 1)
{
if (n % i == 0)
{
cout << i << "*";
n = n / i;
}
i++;
}
return 0;
}
*/
//Se citeste un nr n.Sa se inverseze prima cu ultima cifra
/*#include <iostream>
using namespace std;
int main()
{
int n, prim, ul, x = 0, c, y = 0, inv = 0;
cout << "n=";
cin >> n;
prim = n;//Prim retine prima cifra a numarului
while (prim > 9)//Obtinem prima cifra a numarului
prim /= 10;
ul = n % 10;//Obtinem ultima cifra a numarului
x = ul;//X va retine numarul in care este inversata prima cifra cu ultima
while (n > 9)//Vom pune in x toate cifrele numarului mai putin pe prima si pe
ultima
{
c = n % 10;
x = x * 10 + c;
n = n / 10;
}
x = x * 10 + prim;//Dupa ce am creat numarul x ii adaugam prima cifra ca
fiind ultima cifra a lui n
while (x > 9)//Adaugam si ultima cifra a lui x
{
y = y * 10 + x % 10;
x = x / 10;
}
while (y > 0)//Inversam numarul y doar prin prima si ultima lui cifra restul
nr ramame neschimbat
{
inv = inv * 10 + y % 10;
y /= 10;
}
cout << inv;
return 0;
}*/
//Se citest doua numaere a si b eliminati din numarul a toate cifrele care sunt mai
mici decat cifra minima a numarului b.Afisati noul nr a
//ex a:71358 b:945 r:758
/*#include <iostream>
using namespace std;
int main()
{
int a, b, min = 9, c, x = 0, inv = 0;
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
//Aflam cifra minima a lui b
while (b>0)
{
c = b % 10;
if (c < min)
min = c;
b /= 10;
}
//Parcurgem nr a si construim nr x care are cifre din a mai mari decat min
while (a > 0)
{
c = a % 10;
if (c > min)
x = x * 10 + c;
a /= 10;
}
//Calculam inversul lui x
while (x > 0)
{
inv = inv * 10 + x % 10;
x = x / 10;
}
cout << inv;
return 0;
}
*/
//Interschimbarea continutului a doua caractere
//Se citesc doua caractere de la tastatura.Interschimbati continutul lor
/*#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char s1[1000], s2[1000],aux[1000];
cout << "Introduceti sirul 1: ";
cin >> s1;
cout << "Introduceti sirul 2: ";
cin >> s2;
strcpy(aux, s1);//aux==s1
strcpy(s1, s2);//s1=s2+
strcpy(s2, aux);//s2=aux
cout << "Sirul s1 este: " << s1 << "\n";
cout << "Sirul s2 este: " << s2;
}*/
/*#include <iostream>
#include <cstring>
using namespace std;
int main()
{
int i;
char s[1000];
char x;
cout << "Introduceti sirul: ";
cin >> s;
x = s[0];//vom retine in x prima litera a sirului deoarece in momentul in
care vom parcurge sirul.Prima litera se va tot modifica deci nu trebuie sa o
pierdem
for (i = 0; i < strlen(s); i++)//parcurgem sirul de caractere
if (s[i] == x)//verificam daca litera sirului coincide cu prima litera
{
strcpy(s + i, s + i + 1);//in caz afirmatic pt a stergeo din
sir.Copiem litera de pe pozitia urmatoare peste ea
i--;//deoarece am sters o litera pozitia trebuie sa scada cu 1;
}
cout << s;
}*/