Sunteți pe pagina 1din 4

Transcrierea algoritmilor in limbajul C++

1. citeste n (numar natural) Z0 p1 ct timp n>0 execut cn%10 n [n/10] dac c%3=0 atunci zz+p*(9-c) pp*10 scrie z

#include<iostream.h> int main() { //toate variabilele care apar in program trebuie declarate corespunzator unsigned n,z=0,p=1,c; //z si p pot fi initializate in momentul declararii cout<<"n="; cin>>n; while(n>0) //vom folosi o instructiune compusa pentru corpul while { c=n%10; n/=10; if(c%3==0) //vom folosi o instructiune compusa pentru corpul if { z=z+p*(9-c); p*=10; } } cout<<"Numarul obtinut este "<<z; return 0; }

2. citete x (numr natural nenul) ct timp x>0 execut citete y (numr natural) dac x>y atunci scrie x%10 altfel scrie y%10 xy

#include<iostream.h> int main() { //toate variabilele care apar in program trebuie declarate corespunzator unsigned x,y; cout<<"Introduceti un sir de valori separate prin spatiu si incheiat cu 0 si Enter"<<endl; cin>>x; while(x>0) //folosim instr. compusa pentru corpul while { cin>>y; if(x>y) cout<<x%10; else cout<<y%10;

x=y; } return 0;
3. citete a,b (numere ntregi) dac a<b atunci sa; ab; bs pentru xa,b,-2 execut dac x%2=0 atunci scrie x,

#include<iostream.h> int main() { int a,b,s,x; cout<<"a="; cin>>a; cout<<"b="; cin>>b; if(a<b) { s=a; a=b; b=s; } cout<<"Se afiseaza valorile: "; for(x=a; x>=b; x-=2) //implementare contor descrescator cu pasul -2 if(x%2==0) cout<<x<<" "; return 0; } #include<iostream.h> int main() { unsigned x,z,y=0; cout<<"x="; cin>>x; cout<<"z="; cin>>z; //in C++ nu exista instructiunea repeta-pana_cand //o implementam cu do...while(neg conditia) do{ y=y*10+x%10; x/=100; }while(x!=0); //am negat conditia x=0 while(y*z>0 && y%10==z%10) { y/=10; z/=10; } if(y+z==0) cout<<1; else cout<<2; return 0; }

4. citete x,z (numere naturale) y0 repet yy*10+x%10 x [x/100] pn cnd x=0 ct timp y*z>0 i y%10=z%10 execut y [y/10] z [z/10] dac y+z=0 atunci scrie 1 altfel scrie 0

5.
citete n (numr natural nenul) nr0 pentru a9,0,-1 execut mn ct timp m0 i m%10a execut m [m/10] dac m0 atunci nrnr*10+m%10 scrie nr

#include<iostream.h> int main() { unsigned n, nr=0,m; int a; //a trebuie declarata de tip int deoarece iese din ciclul //for cu valoarea -1 care nu poate fi memorata in unsigned cout<<"n="; cin>>n; for(a=9; a>=0; a--) //implementare contor descrescator cu pasul -1 { m=n; while(m!=0 && m%10!=a) m/=10; if(m!=0) nr=nr*10+m%10; } cout<<"Valoarea obtinuta este "<<nr; return 0; }

6. citete a,n (numere naturale) pentru i1,n,2 execut dac i%2=0 atunci aa-i*i altfel aa+i*i scrie a

#include<iostream.h> int main() { unsigned n,i; int a; cout<<"n="; cin>>n; cout<<"a="; cin>>a; for(i=1;i<=n;i+=2) //implementare contor crescator cu pasul +2 if(i%2==0) a-=i*i; else a+=i*i; cout<<"a="<<a; return 0; }

7. citete a,b,n (numere naturale) dac b=0 atunci scrie greit altfel scrie [a/b] dac n>0 i a%b0 atunci scrie , aa%b; i0 repet scrie [(a*10)/b] a (a*10)%b ii+1 pn cnd i=n sau a=0

#include<iostream.h> int main() { unsigned a,b,n,i; cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"n="; cin>>n; if(b==0) cout<<"gresit"; else { cout<<a/b; if(n>0 && a%b!=0) { cout<<","; a%=b; i=0; do{ cout<<a*10/b; a=a*10%b; i++; }while(i!=n && a!=0); //am negat conditia din repeta..pana_cand } } return 0; }

8. daca a>0 atunci daca c0 atunci s 1 sf_daca altfel s 2 sf_daca

Daca implementam astfel: if(a>0) if(c!=0) s=1; else s=2; este gresit deoarece else se imperecheaza cu cel mai apropiat if (if(c!=0)) Putem rezolva aceasta problema in doua moduri: if(a>0) { //includem if-ul nepereche intr-o instructiune compusa if(c!=0) s=1; } else s=2; sau: if(a>0) if(c!=0) s=1; else; //completam if-ul nepereche cu o ramura else vida else s=2;