Sunteți pe pagina 1din 7

//Coduri pt c++

//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
*/

//Calcularea cmmdc si cmmmc


/*#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "a=";
cin >> a;
cout << "b=";
cin >> b;
while (a != b)
if (a > b)
a = a - b;
else
b = b - a;
cout << "Cmmdc este: " << a << endl;
cout << "Cmmmc este: " << (a * b) / a;
return 0;
}*/

/*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
*/

Exista doua timpuri de transmitere a parametrilor


-transmitere prin valoare(parametri nu contin referinta"&" )
-transmitere prin referinta(parametrii contin"&")
-Exista doua tipuri de variabile
-variabilele locale sunt definite in interiorul unei functii si au sens doar in
interiorul functiei in care au fost definite
-variabilele globale sunt definit la inceputul programului dupa structura using
namespace std si sunt vazute in intregul program. Acestea pot fi folosite in orice
functie definita.
Obs: Variabilele globale sunt initializate automat cu 0

Obs: O functie care nu contine structura return va fi intotdeauna de tip void.O


funcite de tip void poate contie instructiunea cout
//Creati o functie care are ca parametru o variabila intreaga si incrementeaza
variabila cu 2
//Var 1
/*#include <iostream>
using namespace std;
int incrementare (int n)
{
return n + 2;
}

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);
}*/

Obs: O functie are doua tipuri de parametrii


-parametrii formali(sunt parametrii care apar in definirea functiei)
-parametrii efectivi(sunt parametri care apar in apelul functiei)

Obs:Diferenta dintre transmiterea parametrilor prim valoare si transmiterea


parametrilor prin referinta" & "

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.

//Creati o functie care interschima continutul a doua variabile


/*#include <iostream>
using namespace std;
void Interschimbare(int a, int b)//Deoarece parametrii nu sunt transmisi prin
referinta,valoarea lui a si b din programul primcipa nu se va interschimba
{
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;
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;
}

//Pentru a afla prima cifra a nr avem


#include <iostream>
using namespace std;
int main()
{
int n, prim;
cout << "n=";
cin >> n;
prim = n;
while (prim > 9)
prim /= 10;

////Pentru a afla ultima cifra a nr avem


#include <iostream>
using namespace std;
int main()
{
int n, ul;
cout << "n=";
cin >> n;
ul = n % 10;
}

/*Descompunerea in factori primi a unui nr n se face astfel


-Se parcurg divizorii numarului incepand cu i=2
-La fiecare pas se ia catul impartirii numarului n la i
-I va trebui sa creasca cu 1

#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;
}

/* 7.Functii ce lucreaza cu siruri de caractere


* Pt a putea lucra cu funtii trebuie sa importam inainte biblioteca cstring
* 1.Functia strlen(nume sir) returneaza numarul de litere ale sirului de caractere
* 2.Functia strcpy(sir destinatie,sir sursa) copiaza in sirul destinatie sirul
sursa
* 3.Functia strcat(sir destinatie,sir sursa) leaga la sirul destinatiei,sirul sursa
* 4.Functia strupr(sir caracter) transforma toate litere surului de caractere in
litere mari
* 5.Functia strlwr(sir caracter) transforma toate litere surului de caractere in
litere mici
* 6.Functia strcmp(sir1,sir2) compara sirul1 cu sirul2 si returneaza 1 daca sirul1
este mai mare decat sirul2,0 daca cele doua siruri sunt egala si -1 daca sirul1
este mai mic decat sirul2
* 7.Functia strchr(sir,caracter) cauta caracterul in sir si in cazul in care il
gaseste returneaza prima sa pozitie in sir.Daca nu-l gaseste in sir returneaza
caracterul NULL
* 8.Functia strrev(sir) inverseaza sirul
* 9.Functia strncpy(s1,s2,n)copiaza in sirul s1 primele n caractere din sirul s2
* 10.Functia strncat(s1,s2,n)la sirul s1 adauga primele n caractere din sirul s2
* 11.Functia strtok(sir de despartit,sir de separatori)ambii parametrii ai functiei
sunt poiter la tipul char iar rezultatul este tot un pointer
* 12 Functia strstr(s1,s2)se caută daca sirul s2 este subsir al sirului s1.In caz
afirmativ se returneaza prima pozitie pe care apare sirul s2 in sirul s1.Daca sirul
s2 nu se gaseste in sirul s1 se returneaza NULL
* exemplu:s1=anaaremere s2=mere se afiseaza:6 if(strtr(s1,s2)!=NULL)
cout<<strstr(s1,s2); else cout<<Nu este subsir al sirului s1

*/
//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;
}*/

Primul caracter al unui sir este s[0]


Ultimul caracter al unui sir este s[strlen(s)-1]
if (sqrt(i) == (int)sqrt(i))//Pt a verifica daca pozitia din sir este patrat
perfect verificam daca se extrage radicalul exact
strcpy(s + i, s + i + 1);//Este folosit pt a sterge o litera dintrun cuvant
strcpy(s, "");//sirul s la inceput este gol
//Litera din mijloc al unui cuvant este p[stlen(p)/2]

S-ar putea să vă placă și