Sunteți pe pagina 1din 11

Algoritmi - informatica

1. Alg. de determinare a cmmdc a 2 nr.


a. Prin impartire

r=a%b;
while (r!=0)
{ a=b;
b=r;
r=a%b;
}

cmmdc=b;

b. Prin diferenta

while (a!=b)
if(a>b)
a=a-b;
else
b=b-a;

cmmdc=a;

2. Alg. de descompunere in factori primi

d=2;
cout<<n<<" ";
while(n>1)
{ k=0;
while (n%d==0)
{ n=n/d;
k++;
}
if (k!=0)
cout<<d<<"^"<<k<<"*";
d++
}

3. Alg. de verificare daca un nr este prim

ok=1;
if (x>1)
{
for (d=2;d<=x/2;d++)
{ if (x%d==0)
ok=0;
}
else
ok=0;

4. Alg. de construire a inversului unui numar

ni=o;
while (n>0)
{ uc=n%10;
ni=ni*10+uc;
n=n/10;
}
cout<<ni;

5. Alg. de ordonare a elem. unui vector

a. Metoda bulelor
do
{ ordo=1;
for (i=0;i<n-1;i++)
if (a[i]>a[i+1]) (<)
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
ordo=0;
}
}
while (ordo==0)

b. Metoda selectiei

for (i=0;i<=n-2;i++)
for (j=i+1;j<=n-1;j++)
if (a[i]>a[j])
{ aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
}

6. Alg. de stergere a elem de pe pozitii k din vector

for (j=k;j<n-1;j++)
v[j]=v[j+1];
n=n-1;

7. Alg. de inserare a unei valori citite de la tastatura pe


pozitia k

for (j=n-1;j>=k;j--)
v[j+1]=v[j];
v[k]= elementul respectiv
n++;

8. Functiile predefinite pt. tipul caracter

A. Functiile de comparare
a.
strcmp (<sir>,<sir 2>)
- f<0 daca sir 1 <sir 2
- f=0 daca sir 1=sir 2
- f>0 daca sir 1> sir 2
ex: if (strcmp("abc","acb")

b.
strncmp (<sir1>,<sir2>,<sir3>)
- returneaza acelasi lucru ca la a numai ca, compara doar
primele m caractere

stricmp, strincmp
- se folosesc pt a nu se face diferenta intre literele mici si
mari

B. Functii de concatenare

strcat (<sir>,<sir1>)
- functia lipeste sir 1 la sir iar rezultatul se gaseste in sir

strncat (<sir>,<sir1>,i)
- functia lipeste la sir elementele care pornesc de la pozitia i
pana la sfarsit

C. Functii de cautare
a. Cautare caracter in sir

strchr (<sir>, int c)


- cauta prima aparitie a caracterului c in sir si returneaza
sirul de la prima aparitie pana la sfarsit

strrchr (<sir>, int c)


- cauta ultima aparitie a caracterului c in sir si returneaza
sirul de la prima aparitie pana la sfarsit

b. Cautare sir in subsir

strstr (<sir1>,<subsir>)
- cauta prima aparitie a subsirului subsir in sir 1 si returneaza
sirul de la prima aparitie pana la sfarsit

strrstr (<sir1>,<subsir>)
- cauta ultima aparitie a subsirului subsir in sir 1 si
returneaza sirul de la ultima aparitie pana la sfarsit

D. Functii de copiere

strcpy (<sir1>,<sir2>)
- realizeaza copierea in sir 1 a sirului sir 2

strncpy (<sir1>,<sir2>,i)
- realizeaza copierea sirului sir 1 a primelor i caractere din
sirul 2

strcpy (s,s+i) - are ca efect stergerea primelor i caractere


din sir

strcpy (s+i,s+i+j) - are ca efect stergerea caracterelor


s[i],s[i+1],s[i+2], ... ,s[i+j-1]
9. Tipul fisier

- deschiderea unui fisier de date - pentru citire


( de intrare )
ifstream nume_var_fisier ( "cale+nume fisier" )
ex: ifstream f ("numere.txt")

- deschiderea fisierului cu rezultate - pentru scriere


( de iesire )
ofstream nume_var_fisier ( "cale+nume" )
ex: ofstream f ("rezultate.txt")

- citirea datelor
f>>nr

- afisarea datelor
g<<nr<<" ";

- inchiderea fisierelor
f.close ( );

while (f>>n) <=> cat timp exista nr in fisier citeste n

10. Matricea patratica

a. Citirea unei matrici

cout<<"n=";
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{ cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];
}

b. Afisarea unei matrici

for (i=1;i<=n;i++)
{ for (j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}

c. Relatiile existente intre indicii matricii

*Diagonala principala

for (i=1;i<=n;i++)
- prel a[i][i]

*Deasupra diag. principale

for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)

*Sub diag. principala

for (i=2 ; i<=n ; i++)


for (j=1 ; j<=i-1; j++)

*Diagonala secundara

for (i=1 ; i<=n ; i++)


- prel a[i][n-i+1]

*Deasupra diag. secundare


for (i=1 ; i<=n-1 ; i++)
for (j=1 ; j<=n-i ; j++)

*Sub diag. secundara

for (i=2 ; i<=n ; i++)


for (j=n-i+2 ; j<=n ; j++)

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