Subrograme C++
Subrograme C++
#include<iostream.h> using namespace std; //procedural void desc(int nr) { int d=0,k=0; for(d=2;nr!=1;d++) { for(k=1;nr%d==0;k++)
nr=nr/10; if(k>=1) cout<<d<<"^"<<k; } } int nr; main() { cout<<"nr="; cin>>nr; desc(nr); } Prim operand #include<iostream.h> using namespace std; void prim(int nr) { int ok=0,d; ok=1; for(d=2;d<=nr/2&&ok==1;d++) if(nr%d==0) ok=0; if(ok==1) cout<<"prim"; } int nr; main() { cout<<"nr="; cin>>nr; prim(nr); }
Prim procedural #include<iostream.h> using namespace std; //procedural int prim(int nr) { int ok=0,d; ok=1; for(d=2;d<=nr/2&&ok==1;d++) if(nr%d==0) ok=0; if(ok==1) return ok; } int nr; main() { cout<<"nr="; cin>>nr; cout<<prim(nr); } Descom nr operand #include<iostream.h> using namespace std; int divi(int nr) { int d; for(d=2;d<=nr;d++) if(nr%d==0) cout<<d<<" "; return 1; } int nr; main()
#include<iostream.h> using namespace std; //procedural void divi(int nr) { int d; for(d=1;d<=nr;d++) if(nr%d==0) cout<<d<<" "; } int nr; main() { cout<<"nr="; cin>>nr; divi(nr); }
#include<iostream.h> //Sa se scrie o functie care sa verifice daca un doua numere intregi sunt prime gemene (sunt prime si diferenta in modul este egala cu 2). int prim(int nr) { int d; if(nr<=2) return 0; else
for(d=2;d<=nr/2;d++) if(nr%d==0) return 0; return 1; } int a,b; main() { cout<<"a"; cin>>a; cout<<"b"; cin>>b; if(a-b==2||b-a==2) if(prim(a)==1) if(prim(b)==1) cout<<"numere gemene"; } #include<iostream.h> //Sa se scrie o functie care sa afiseze suma cifrelor unui numar intreg dat ca parametru. int suma(int nr) { int s=0,u; while(nr!=0) { u=nr%10; s=s+u; nr=nr/10; } return s; } int a,s; main() {
cout<<"a"; cin>>a; s=suma(a); cout<<s; } #include<iostream.h> //Se citete un numr natural n. S se numere cte cifre pare i cte cifre impare are numrul. void cifre(int nr) { int cp=0,ci=0,u; while(nr!=0) { u=nr%10; if(u%2==0) cp++; else ci++; nr=nr/10; } cout<<"cp="<<cp<<endl; cout<<"ci="<<ci; } int a; main() { cout<<"a"; cin>>a; cifre(a); } /*Se citeste un numar natural n. Sa se descompuna in suma de numere fibonaccii. Indicatie: Definim functia max_f, care determina cel mai mare numar fibonacci mai mic sau egal cu un numar dat.
Functia primeste ca parametru transmis prin valoare numarul dat. Definim functia fibo, care apeleaza functia max_f si astfel determina max, cel mai mare numar fibonacci mai mic sau egal cu numarul dat, apoi scade din numarul dat, numarul max. Se reia algoritmul atata timp cat numarul dat este diferit de zero. Exemplu: pentru n=25 n=21+3+1 fibonacci 0 1 1 2 3 5 8 13 21 34...
*/ #include<iostream.h> int max_f(int nr) { int c1=0,c2=0,c3=0,i=0; c1=c2=1; c3=c1+c2; for(i=3;c3<=nr;i++) { c3=c1+c2; c1=c2; c2=c3;
} } main() {
/*Sa se scrie cate o functie care sa determine: cel mai mare divizor comun a doua numere intregi date ca parametri. cel mai mic multiplu comun a doua numere intregi date ca parametri
Indicatii: Pentru determinarea cmmdc se va folosi algoritmul lui Euclid prin impartiri repetate. Pentru determinarea cmmmc se va folosi relatia dintre cmmmc si cmmdc: cmmmc(a,b)=(a*b)/cmmdc(a,b)*/ #include<iostream.h> int cmmdc(int a,int b) { while(a!=b) if(a>=b) a=a-b; else b=b-a; return a; } void cmmmc(int a,int b) { cout<<(a*b)/cmmdc(a,b); } int x,y; main() { cout<<"x="; cin>>x;
/*Se citeste un numar natural n in baza 10 si b un numr natural 2<=b<=9 reprezentand o baza de numeratie. Sa se transforme numarul n in baza b. Indicatie: Vom scrie o functie conv, de tip void, cu doi parametrii transmisi prin valoare, respectiv n si b. Rezultatul conversiei il vom memora intr-un tablou unidimensional t. In finalul functiei afisam continutul tabloului in ordinea inversa construirii lui. */ #include<iostream.h> void conv(int n,int b) { int p=1,nr=0; while(n) { nr=(n%b)*p+nr; p*=10; n/=b; } cout<<nr; } int n,b; int main() { cout<<"n= ";