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

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

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

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

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

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

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

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