Bacalaureat 2012-Sesiunea iunie-iulie

Subiecte bac 2012-Sesiunea de vara

Rezolvare bac 2012-Sesiunea de vara

Subietul I

1. c

2.

a) 46402

b) 1040, 1041, 1050, 1051, 1140, 1141, 1150, 1151

c)

citeste n (numar natural)

m<-0

p<-1

- repeta

| -daca n%2<>0 atunci

| | n<-n-1

| |_

|

| m<-m+(n%10)*p

| n<-[n/10]

| p<-p*10

| pana cand n<=0

|_

scrie m

d)

#include <iostream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

unsigned int m,n,p;

cout<<"n=";cin>>n;

m=0;

p=1;

while(n>0)

{

if(n%2!=0)

n=n-1;

m=m+(n%10)*p;

n=n/10;

p=p*10;

}

cout<<m;

return 0;

}

Subiectul II

1. b

2. b

3. cout<<(s.A.x-s.B.x)*(s.A.x-s.B.x) + (s.A.y-s.B.y)*(s.A.y-s.B.y);

4.

#include <iostream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

int a[5][5],i,j;

for(i=1;i<=5;i++)

for(j=1;j<=5;j++)

{if(i+j<5)

a[i][j]=i+j;

else

a[i][j]=i+j-5;

if(i==5&&j==5)

a[i][j]=0;

}

for(i=1;i<=5;i++)

{for(j=1;j<=5;j++)

cout<<a[i][j]<<" ";

cout<<endl;

}

return 0;

}

5.

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

char a[31],b[31],p[31],s[31],aux1[31];

int na,nb,q=1,w=1,aux5,i,j=0;

cout<<"Introduceti primul cuvant: ";cin.get(a,30);

cin.get();

cout<<"Introduceti al doilea cuvant: ";cin.get(b,30);

na=strlen(a);

nb=strlen(b);

if(na>nb)

{

strcpy(aux1,a);

strcpy(a,b);

strcpy(b,aux1);

aux5=na;

na=nb;

nb=aux5;

}

for(i=0;i<na;i++)

if(a[i]!=b[i])

q=0;

if(q==1)

strcpy(p,a);

for(i=nb-na;i<nb;i++)

{if(b[i]!=a[j])

w=0;

j++;

}

if(w==1)

strcpy(s,a);

if(q==1&&w==1)

{if(strcmp(p,s)==0)

cout<<s;

}

else

cout<<"Nu exista ";

return 0;

}

Subiectul III

1. c

2. 94*2*10

3.

#include <iostream>

using namespace std;

void dublu(int &n, int a[50])

{

int i,j;

for(i=0;i<n;i++)

{

if (a[i]>0)

{

n++;

for(j=n-1;j>i+1;j--)

a[j]=a[j-1];

a[i+1]=a[i];

i++;

}

}

}

4.

#include <iostream>

#include <fstream>

using namespace std;

int cifre( int n,int k)

{

int aux,a[10],i=0,t=0,p=1;

aux=n;

while(aux)

{

a[i]=aux%10;

aux=aux/10;

i++;

t++;

}

for(i=0;i<t-1;i++)

if(!((a[i]-a[i+1])==k))

p=0;

return p;

}

int main()

{

cout << "Hello world!" << endl;

ofstream g("BAC.TXT");

unsigned int x;

long i;

do

{

cout<<"Introduceti o cifra intre 1 si 8: ";cin>>x;

}while(x<1 || x>8);

for(i=10;i<=123456789;i++)

if(cifre(i,x))

g<<i<<endl;

return 0;

}

Subprogramul "cifre" verifica conditia ceruta. Daca conditia este indeplinita, atunci numarul va fi scris in fisier, urmat de instructiunea de sfarsit de rand, "endl". Programul este eficient deoarece: este liniar, nu foloseste un tablou, este de tipul O(n).