Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Varianta 1 Varianta 2
1
Varianta 2. Se introduce un sir de numere de la tastatura pana la intalnirea valorii 0.Sa se
afiseze maximul dintre aceste numere.
Variana 1 Varianta 2
Algoritmul determina cifrele unui numar n, prin extragerea pe rand a fiecarei cifre c
(incepand cu cifra unitatilor), cu operatia n %10, si eliminarea din numar a cifrei extrase,
cu operatia n /10. Aceste operatii se executa cat timp mai exista cifre de extras din n (n!
=0). Pasii care se executa sunt :
int n,c;
cin>>n;
while(n!=0)
{ c=n%10;
cout<<c;
n=n/10;
}
2
Algoritm pentru determinarea inversului unui numar
Algoritmul determina inv, inversul numarului n, prin extragerea pe rand a fiecarei cifre
(incepand cu cifra unitatilor) din numarul n si compunerea unui nou numar cu aceste
cifre. De exemplu, daca numarul este 123, inversul va fi 321. Pasii algoritmului sunt :
int n, inv ;
cin>>n ;
inv=0 ;
while (n!=0)
{ inv=inv*10+n%10 ;
n=n/10 ;
}
cout<<inv ;
Se introduc pe rand, de la tastatura, mai multe numere care reprezinta cifrele unui
numar, pana cand se introduce un numar care nu mai poate fi cifra. Sa se afiseze numarul
nr obtinut din aceste cifre
int c, nr ;
nr=0 ;
cin>>c ;
while((c>=0)&&(c<=9))
{ nr=nr*10+c;
cin>>c;
}
cout<<nr;
3
4)Algoritmi pentru calcularea c.m.m.d.c.
Varianta 1. Foloseste algoritmul lui Euclid, care atribuie lui b restul impartirii lui a la
b, iar lui a vechea valoare a lui b. Rezolvarea problemei se bazeaza pe conditia b!=0.
Varianta 2. Foloseste algoritmul de scadere repetata a valorii celei mai mici din
valoarea cea mai mare. Rezolvare problemei se bazeza pe conditia a !=b .
Pasul 1. Se scade, din numarul mai mare, celalat numar :daca a>b, se executa operatia
a=a-b ;altfel, se executa operatiab=b-a ;
Pasul 2. Daca a !=b, atunci se revine la pasul1, altfel cmmdc=a .
Varianta 1 Varianta 2
#include<iostream.h>
#include<math.h>
void main()
{int n,d,sw=1;
cout<<"nr:";cin>>n;
for(d=2;d<=sqrt(n);d++)
if(n%d==0) sw=0;
else d++;
if(sw==1) cout<<"nr este prim";
else cout<<"nr nu este prim";
}
4
6)Algoritmi pentru prelucrarea divizorilor unui numar
#include<iostream.h>
void main()
{
int n,i;
cout<<1<<" "<<n<<" ";
for(i=2;i<=n/2;i++)
if(n%i==0) cout<<i<<" ";
Pentru afisarea numai a divizorilor primi ai unui numar n, algoritmul anterior se modifica
prin eleminarea tuturor divizorilor i gasiti la un moment dat, operatia repetandu-se pana
cand se elimina toti divizorii din numarul n (n are valoarea 1). Pasii algoritmului sunt:
#include<iostream.h>
void main()
{int n,i;
cout<<"nr:";cin>>n;
i=2;
5
while(n!=1)
{ if(n%i==0) cout<<i<<" ";
while(n%i==0)
n=n/i;
i=i+1;
}
}
Pasii algoritmului :
Pasul 1. Se initializeaza numarul nq cu 0, prin operatia nq=0 .
Pasul 2. Se initializeaza p-puterea lui 10- cu 1, prin operatia p=1 ;
Pasul 3. Se imparte n10 la q si se obtine restul c, care va fi una dintre cifrele reprezentarii
(c=n10%q), si catul n10(n10=n10 /q).
Pasul 4. Se actualizeaza formatul de afisare a reprezentarii numarului in baza q, prin
operatia nq=nq+c*p .
Pasul 5. Se creste putera lui 10, prin operatia p=p*10.
Pasul 6. Daca n10 !=0, atunci se revine la Pasul 3 ; altfel, se afiseaza nq.
#include<iostream.h>
void main()
{int n10,nq,p,q;
cout<<"nr:";cin>>n10;
cout<<"baza:";cin>>q;
nq=0;p=1;
while(n10!=0)
{ nq=nq+p*(n10%q);
n10=n10/q;
p=p*10;
}
cout<<nq;
}
Pasii algoritmului
6
Pasul 5. Daca c este o cifra (c>=0 si c<q), atunci se revine la Pasul 3 ; altfel, se afiseaza
numarul n10.
#include<iostream.h>
void main()
{int c,n10,q;
cout<<"baza:";cin>>q;
n10=0;
cout<<"cifra:";cin>>c;
while((c>=0)&&(c<q))
{n10=n10*q+c;
cout<<"cifra:";cin>>c;
}
cout<<"nr in baza 10:"<<n10;
}