P. 1
Algoritmi elementari

Algoritmi elementari

|Views: 6,235|Likes:
Published by Madalina Georgiana

More info:

Published by: Madalina Georgiana on May 09, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

11/27/2013

pdf

text

original

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

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

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

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

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

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

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

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->