Vous êtes sur la page 1sur 5

Algoritmi fundamentali n C++

Algoritm Cod C++


Observaii
nedeterminare: a=0 i b=0 (orice real este soluie); nu are soluie: 0x+b=0, b nenul; soluie: -b/a, a nenul

double a,b,x; Rezolvarea ecuaiei de gradul I cu coeficieni reali //intrare: a,b if(a==0) ax +b=0

if(b==0) cout<<nedeterminare; else cout<<nu are sol.; else x=-b/a; double a,b,c,x1,x2,delta; //intrare: a,b,c delta=b*b-4*a*c; if(delta>0) { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); } else if(delta==0) { x1=x2=-b/(2*a); } else cout<<fara sol. reale!;

Rezolvarea ecuaiei de gradul II cu coeficieni reali ax 2+bx+c=0

#include<cmath> pentru sqrt

Calculul ariei unui triunghi double a,b,c,s,p; //intrare: a,b,c pe baza lungimilor if(a>0 && b>0 && c>0 && laturilor

s-a utilizat formula lui Heron;

a+b>c && a+c>b && b+c>a) {


p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c));

} else cout<<valori eronate!;

Calculul celui mai mare divizor comun folosind algoritmul lui Euclid

unsigned a,b,r; //intrare: a,b while(b!=0) { r=a%b; a=b; b=r; } //aici cmmdc=a unsigned a,b,c,d,r; //intrare: a, b nenul c=a;d=b; while(d!=0) { r=c%d; c=d;

(a,0)=(0,a)=a algoritmul modific valorile iniiale ale datelor de intrare

Simplificarea fraciei a/b

s-au protejat valorile varibilelor a i b folosind variabilele ajuttoare c i d;

1/5

Algoritm

Cod C++
d=r; } //simplificare cu c a/=c; b/=c;

Observaii

Calculul celui mai mic multiplu comun

unsigned a,b,r,c,d,m; //intrare: a,b c=a; d=b; while(b!=0) { r=a%b; a=b; b=r; } if(a==0) m=0; else m=c/a*d; //aici cmmmc=m unsigned n,i,f; //intrare: n f=1; for(i=1;i<=n;i++) f*=i; //final: f unsigned n,i; double s; //intrare: n s=0; for(i=1;i<=n;i++) s+=1.0/i; //final: s unsigned n,d; bool b; //intrare: n if(n==0 || n==1) b=false; else if(n==2) b=true; else { b=true; d=2; while(b && d<=sqrt(n)) { if(n%d==0) b=false; d++; } } //final: b bool b; //intrare: n if(n==0 || n==1) b=false; else if(n==2)

(a,b)[a,b]=ab [a,0]=[0,a]=0

Calculul factorialului

0!=1 n!=1x2x...xn

Calculul sumei 1 1 1 1+ + ++ 2 3 n

Rezultatul sumei este real!

Verificarea primalitii(I)

#include<cmath> pentru sqrt 0 i 1 nu sunt prime

Verificarea primalitii(II) unsigned n,d;

orice numr par (diferit de 2) nu este prim; modificarea permite verificarea doar a posibililor divizori impari

2/5

Algoritm

Cod C++
b=true; else if(n%2==0) b=false; else { b=true; d=3; while(b && d<=sqrt(n)) { if(n%d==0) b=false; d+=2; } } //final: b

Observaii

Descompunerea unui numr natural n factori primi

unsigned n,f,p; //intrare: n>1 f=2; while(n!=1) { p=0; while(n%f==0) { p++; n/=f; } if(p!=0) cout<<f<< la <<p<<endl; f++; } unsigned n,d; //intrare: n for(d=1;d<=n;d++) if(n%d==0) [prelucrare divizor d] unsigned n; //intrare: n while(n!=0) { [prelucrare n%10] n/=10; } unsigned n,nr; //intrare: n nr=0; do { n++; n/=10; } while(n!=0); //final: nr unsigned n,s; //intrare: n s=0; while(n!=0)

f factorul prim; p puterea la care apare f n cadrul descompunerii

Prelucrarea divizorilor unui numr natural

Prelucrarea cifrelor unui numr natural

n%10 este ultima cifr a lui n; cifrele se obin de la ultima la prima la final n devine 0

Numrul de cifre ale unui numr natural

s-a folosit do-while pentru a se obine un rezultat corect n cazul n=0 (o cifr)

Calculul sumei cifrelor unui numr natural

3/5

Algoritm
{ s+=n%10; n/=10; } //final: s

Cod C++

Observaii

Calculul primei cifre a unui numr natural

unsigned n,c; //intrare: n c=n; while(c>=10) c/=10; //final: c

se elimin cifre de la finalul lui n pn cnd rmne una singur

Verificarea proprietii de unsigned n,m,o; //intrare: n palindrom

m=n; o=0; while(m!=0) { o=o*10+m%10; m/=10; } if(n==o) cout<<palindrom; else cout<<nu este palindrom; unsigned n,i; double v,min,max; //intrare: n if(n==0) cout<<secv. vida; else { cin>>v; min=max=v; for(i=1;i<=n-1;i++) { cin>>v; if(v<min) min=v; if(v>max) max=v; } } //final: min,max unsigned n,v,pare,impare; //intrare: n pare=impare=0; cin>>v; while(v!=0) { if(v%2==0) pare++; else impare++; cin>>v; } //final: pare,impare

exemple de palindroame: 5, 77, 121, 4334, etc. algoritmul protejeaz valoarea variabilei n; variabila o conine oglinditul lui n

Calculul valorii minime/maxime dintr-o secven de n valori reale

cele n valori reale se prelucreaz pe rnd, folosind variabila v; dac n>0 iniializarea variabilelor min/max se face cu prima valoare din secven iar apoi se pelucreaz celelalte n-1 valori

Numrarea valorilor pare/impare dintr-o secven de numere naturale terminat cu valoarea 0

4/5

Algoritm

Cod C++

Observaii
f 0=f 1=1 f n=f n2+f n1 , n2

Generarea termenului de unsigned n,a,b,f; rang n al irului Fibonacci //intrare: n

if(n==0 || n==1) f=1; else { a=b=1; for(i=2;i<=n;i++) { f=a+b; a=b; b=f; } } //final: f

5/5

Vous aimerez peut-être aussi