Exercitii rezolvate - instructiuni

A. Scrieți programele C++ pentru implementarea următorilor algoritmi scriși în pseudocod !

1. Determină și afișează cel mai mare dintre două numere citite de la tastatură. citește a, b; 

citeste a,b

daca a>b atunci scrie a using namespace std; int main {   int a,b; cin>>a>>b; if(a>b) cout<a
 * 2) include

2. Determină și afișează cel mai mare dintre trei numere citite de la tastatură.

citește a, b, c

dacă a>b atunci daca a>c atunci scrie a

    altfel scrie c

  altfel daca b>c atunci scrie b

               altfel scrie c

Soluție:

using namespace std; int main {   int a,d,c; cin>>a>>b>>c;
 * 1) include

if(a>b) if(a>c) cout<c)cout<0 executa

s=s+n MOD 10

n=n/10

sfarsit cat timp

scrie s

Soluție:

using namespace std; int main {   int n, s;    cin>>n; s=0; while(n!=0)   { s=s+n%10; n=n/10; }   cout<>n; sw=1; for(i=2;i<=n/2;i++) if(n%i==0) sw=0; if(sw==1)cout<<”numarul citit este prim”; else cout<<”numarul nu este prim”; return 0; }

5. Determinarea și afișarea cmmdc pentru două numere citite de la tastură, folosind algoritmul lui Euclid.

citeste a, b

cat timp a MOD b <> 0 executa

r=a MOD b

a=b

b=r

sfarsit cat timp

scrie b

Soluție:

using namespace std;
 * 1) include

int main {   int a,d; cin>>a>>d; while(a%d!=0) {     r=a%d; a=d; d=r; }   cout<>a>>b; if(a>b) {aux=a; a=b; b=aux;} for(int i=a;i<=b;i++) if(x % 2!=0) cout<>a>>b; if(a>b) {aux=a; a=b; b=aux;} int i=a;

while(i<=b) {  if(x % 2!=0) cout<>n; s=-1; while(n!=0) {   if(n%10>s) s=n%10; else s=11; } if(s==11) cout<<”cifrele nu sunt in ordine crescatoare” ; else cout<<”cifrele sunt in ordine crescatoare” ;

Soluție:

cin>>n; s=-1; do { if(n%10>s) s=n%10; else s=11; } while(n!=0); if(s==11) cout<<”cifrele nu sunt in ordine crescatoare” ; else cout<<”cifrele sunt in ordine crescatoare” ;

3. Calculează și afișează suma S=1-4+9-16+....+(-1)^n*n^2

cin>>n; if(n<0) n=-n; sum=0; for(i=1;i<=n;i++) if(i%2==0) sum-=i*i; else sum+=i*i; cout<>n; if(n<0) n=-n; sum=0; i=1; while(i<=n) {  if(i%2==0) sum-=i*i; else sum+=i*i; i++; } cout<>n; if(n<0) n=-1*n; d=1; for(i=2;i<=n/2;i++) if(n%i==0)d=i; if(i==n/2+1) cout<<”numarul nu are divizori proprii”; else cout<>n; if(n<0) n=-1*n; d=n/2; while(n % d !=0)d--; if(d==1)cout<<”numarul dat nu are divizori proprii”; else cout<>n; max=0; do {  if(max < n%10) max=n%10; n=n/10; } while(n!=0); cout<>n; max=0; while(n!=0) {  if(max < n%10) max=n%10; n=n/10; } cout<10. Determinați valoarea funcției într-un punct x, dat de la tastatură. Soluție:

using namespace std; int main { float x, f; cin>>x; if(x<=0) f=x*x; else if(x<=10) f=x+1; else f=-x*x+2 cout<<”f(”<d)||(c>b)) cout<<”Formeaza intervale disjuncte”; else cout<<”Intervalele nu sunt disjuncte”; } else cout<<”Nu pot forma intervale”; return 0; }
 * 1) include

3. Să se verifice dacă un număr natural, introdus de la tastatură, este pefect (egal cu suma divizorilor mai mici ca el, spre exemplu 6=1+2+3). Soluție:

using namespace std; int main { unsigned int n, s=1, d; cin>>n; for(d=2;d<=n/2;d++) if(n%d==0)s=s+d; }
 * 1) include

if(s==n) cout<<”numarul este perfect !”; else cout<<” numarul nu este perfect !”; return 0; }

4. Să se calculeze și să se afișeze suma S=1+1*2+1*2*3+…+1*2*3*…*n, unde n este un număr natural, citit de la tastatură. Soluție:

using namespace std; int main { unsigned int n, termen=1; unsigned long sum=0; cin>>n; for(i=1;i<=n;i++) { termen=termen*i; sum=sum+termen; } cout<>n; for(i=1;i<n;i++) { s=0; ic=i; while(ic) {  s=s+(ic%10)*(ic%10); ic=ic/10; } if(s==i) cout<<”Numarul”<<i<<” este egal cu suma patratelor cifrelor sale \n”;} return 0; }
 * 1) include