Algoritmi elementari

1)Algoritmi pentru interschimbare
Varianta 1. Interschimbarea valorilor a doua variabile(a si b) prin folosirea unei variabile intermediare (x).Variabila intermediara se foloseste pentru salvarea valorii care se distruge prin prima operatie de atribuire.Pasii algoritmului sunt: Pasul 1. Se salveaza valoarea primei variabile (a) in variabila x, prin x =a Pasul 2. Se atribuie primei variabile,a carei valoare a fost salvata (a), valoarea celei de a doua variable (b), prin a=b. Pasul 3. Se atribuie celei de a doua variabile (b) valoarea primei variabile care a fost salvata (x), prin b=x Varianta2. Interschimbarea valorilor a doua variabile (a si b) fara folosirea unei variabile intermediare.Se folosesc identitatile matematice a=(a-b)+b si b=((a-b)+b)-(a-b). Pentru interschimbarea valorilor se foloseste valoarea a-b, care va fi atribuita initial variabilei a. Varianta 1 float a,b,x; cin>>a>>b; x=a; a=b; b=x; cout<<a<<b; Varianta 2 float a,b; cin>>a>>b; a=a-b; b=a+b; a=b-a; cout<<a<<b;

2)Algoritm pentru determinarea maximului (minimului)
Algoritmul determina valoarea maxima (minima)dintr-un sir de numere introduse de la tastatura. Algoritmul consta in atribuirea valorii primului element maximului (minimului) si compararea acestei valori cu elementele din sir. Pasii care se executa sunt : Pasul 1. Se citeste primul numar a. Pasul 2. Se atribuie maximului valoarea lui a, prin max=a Pasul 3. Se citeste urmatorul numar a. Pasul 4. Daca a>max, atunci se atribuie maximului valoarea lui a, prin max=a. Pasul 5. Daca mai sunt date de citit, se revine la Pasul 3. Varianta 1. Se introduce un sir de n numere de la tastatura. Sa se afiseze maximul dintre aceste numere.

1

•Algoritmul pentru determinarea inversului unui numar (inversarea cifrelor unui numar) Algoritmul pentru extragerea cifrelor unui numar Algoritmul determina cifrele unui numar n. Pasii care se executa sunt : Pasul 1. 3)Algoritmi pentru prelucrarea cifrelor unui numar Pentru prelucrarea cifrelor unui numar se pot folosi urmatorii algoritmi : •Algoritmul pentru extragerea cifrelor unui numar . } cout<<max. for(i=2. si eliminarea din numar a cifrei extrase.c. max=a. Aceste operatii se executa cat timp mai exista cifre de extras din n (n! =0). Se extrage cifra cea mai nesemnificativa. max=a. max. cin>>n. if (a>max) max=a.i<=n.Varianta 2. Variana 1 int a. } 2 .i++) { cin>>a. Pasul 4. cin>>n>>a . cin>>a. •Algoritmul pentru compunerea unui numar din cifrele sale . n. Se introduce un sir de numere de la tastatura pana la intalnirea valorii 0. Pasul 3. cout<<c.Sa se afiseze maximul dintre aceste numere. i . prin extragerea pe rand a fiecarei cifre c (incepand cu cifra unitatilor). Daca n !=0. max. cu operatia n %10. while(n!=0) { c=n%10. Se elimina din numar cifra extrasa. while(a!=0) { if (a>max) max=a. } cout<<max. cu operatia n=n/10 . int n. Varianta 2 int a. Se afiseaza (se prelucreaza) cifra. cu operatia c=n%10. atunci se revine la Pasul 1. n=n/10. cu operatia n /10. cin>>a. Pasul 2.

} cout<<inv . Daca c este o cifra ((c>=0) && (c<=9)). Se afiseaza numarul nr. Se elimina din numarul n cifra extrasa. Pasul 6. Daca n!=0. Se aduna la numarul nr inmultit cu 10 cifra citita. atunci se revine la Pasul 3. 3 . cu operatia n=n/10. Pasul 5. de la tastatura. while (n!=0) { inv=inv*10+n%10 . mai multe numere care reprezinta cifrele unui numar. nr . Se initializeaza numarul invers inv cu valoarea 0. cin>>n . Pasul 2. prin operatia inv=inv*10+n%10. n=n/10 . atunci se revine la Pasul 3. De exemplu. inv=0 . Pasul 4. Se initializeaza numarul nr cu valoarea 0. prin operatia inv=0 . prin nr=nr*10+c . Pasii algoritmului sunt : Pasul 1. Pasul 3. inversul numarului n. Se citeste cifra c. daca numarul este 123. nr=0 .Algoritm pentru determinarea inversului unui numar Algoritmul determina inv. inversul va fi 321. Pasul 4. prin operatia nr=0. int c. cin>>c. Algoritmul pentru compunerea unui numar din cifrele sale Se introduc pe rand. Se citeste numarul n.Se citeste cifra c. cin>>c . prin extragerea pe rand a fiecarei cifre (incepand cu cifra unitatilor) din numarul n si compunerea unui nou numar cu aceste cifre. pana cand se introduce un numar care nu mai poate fi cifra. Pasul 3. } cout<<nr. inv . int n. Pasul 5. while((c>=0)&&(c<=9)) { nr=nr*10+c. Se extrage cifra cea mai nesemnificativa din numarul n si se aduna cifra la numarul inv inmultit cu 10. Sa se afiseze numarul nr obtinut din aceste cifre Pasii algoritmului sunt : Pasul 1. Pasul 2.

for(d=2.b.h> #include<math. Daca a !=b. Varianta 2.r . Foloseste algoritmul lui Euclid. se executa operatia a=a-b . altfel. cin>>a>>b. atunci se revine la pasul1. Pasul 3. else cout<<"nr nu este prim". b=b-a. while(a!=b) { if (a>b) else } a=a-b. cmmdc=a .d<=sqrt(n). se executa operatiab=b-a . Foloseste algoritmul de scadere repetata a valorii celei mai mici din valoarea cea mai mare. Varianta 2 cout<<”cmmdc=”<<a.h> void main() {int n.d++) if(n%d==0) sw=0.b=r. Varianta 1. celalat numar :daca a>b. int a. iar lui a vechea valoare a lui b. b=r. if(sw==1) cout<<"nr este prim". a=b.altfel. 5)Algoritmi pentru testarea unui numar prim #include<iostream. Pasii algoritmului sunt : Pasul 1. } 4 . while(b !=0) { r=a%b. else d++. Rezolvare problemei se bazeza pe conditia a !=b .d. Rezolvarea problemei se bazeaza pe conditia b!=0. Pasii algoritmului sunt : Pasul 1.4)Algoritmi pentru calcularea c. Pasul 2.sw=1. Daca b !=0.d. Se executa operatiile de atribuire a=b .cin>>n.b. altfel cmmdc=a . atunci se revine la Pasul 1 .m. din numarul mai mare. } cout<<”cmmdc=”<<a. Se imparte a la b si se obtine restul r (r=a%b) Pasul 2. Varianta 1 int a. cin>a>>b .m. care atribuie lui b restul impartirii lui a la b. cout<<"nr:".c. Se scade.

Se initializaeza sirul de numere cu care se va imparti n. Daca numarul n se imparte la numarul generat. Pasul 4. atuci se afiseaza i si. Pasul 2. Se initializeaza sirul de numere cu care se va imparti n. #include<iostream. se termina algoritmul. prin operatia i=2 .i. Se trece la urmatorul divizor posibil. cout<<1<<" "<<n<<" ". Pasii algoritmului sunt: Pasul 1.6)Algoritmi pentru prelucrarea divizorilor unui numar Algoritmul pentru generarea divzorilor proprii ai unui numar Algoritmul de generare a divizorilor proprii ai unui numar n consta in impartirea numarului la un sir de numere i.i++) if(n%i==0) cout<<i<<" ". atunci se revine la Pasul 2 . Pasul 4. prin i=i+1. altfel. Pasul 5. Pasul 3. cu primul divizor posibil.h> void main() { int n. Pasul 2. prin operatia i=2 . Daca i il divide pe n.i<=n/2. operatia repetandu-se pana cand se elimina toti divizorii din numarul n (n are valoarea 1). Pasul 3.cin>>n. atat timp cat n se imparte la i. i=2. atunci se revine la Pasul 3 . } Algoritmul pentru generarea divizorilor primi ai unui numar Pentru afisarea numai a divizorilor primi ai unui numar n. altfel. se imparte n la i pentru a elemina toate puterile lui i din numarul n. atunci afiseaza i.h> void main() {int n. Daca i il divide pe n. Pasii algoritmului sunt : Pasul 1.i. Daca n !=1. algoritmul anterior se modifica prin eleminarea tuturor divizorilor i gasiti la un moment dat.Se incrementeaza cu 1 numarul la care se imparte n. for(i=2. Afiseaza divizorii 1 si n. 5 . cout<<"nr:". prin incrementarea lui i. cu primul divizor posibil. se termina algoritmul. cu i=i+1. #include<iostream. Daca i<=[n/2]. atunci i este divizor al lui n.

Pasul 6. prin operatia n10=0 .cin>>n10.nq. care va fi una dintre cifrele reprezentarii (c=n10%q). Se citeste cifra c. Pasul 4. } cout<<nq. Se initializeaza numarul nq cu 0. cout<<"baza:". Se actualizeaza formatul de afisare a reprezentarii numarului in baza q. Pasul 2. altfel. while(n10!=0) { nq=nq+p*(n10%q). Se initializeaza numarul n10 cu 0. Pasul 5. Se creste putera lui 10.p=1. Pasul 4. si catul n10(n10=n10 /q). prin operatia p=p*10. } } 7)Algoritmi pentru conversii intre sisteme de numeratie Algoritmul pentru conversia din baza 10 in baza q Pasii algoritmului : Pasul 1. while(n%i==0) n=n/i.h> void main() {int n10. prin operatia nq=0 . 6 . la numarul n10 inmultit cu q. Se aduna. cifra citita. Se imparte n10 la q si se obtine restul c. Daca n10 !=0. cout<<"nr:". prin operatia n10=n10*q+c.cu 1. Se citeste cifra c. p=p*10.cin>>q.while(n!=1) { if(n%i==0) cout<<i<<" ". atunci se revine la Pasul 3 . Pasul 2. prin operatia p=1 .p. #include<iostream. } Algoritmul pentru conversia din baza q in baza 10 Pasii algoritmului Pasul 1. Se initializeaza p-puterea lui 10. se afiseaza nq. nq=0. i=i+1. Pasul 3. Pasul 3. prin operatia nq=nq+c*p . n10=n10/q.q.

} 7 .cin>>q. } cout<<"nr in baza 10:"<<n10. #include<iostream.n10. atunci se revine la Pasul 3 . se afiseaza numarul n10. cout<<"baza:". cout<<"cifra:". n10=0.q. cout<<"cifra:". altfel. while((c>=0)&&(c<q)) {n10=n10*q+c. Daca c este o cifra (c>=0 si c<q).h> void main() {int c.cin>>c.Pasul 5.cin>>c.

Sign up to vote on this title
UsefulNot useful