Bacalaureat 2013-Sesiunea iunie-iulie

Subiecte bac 2013-Sesiunea de vara

Rezolvare bac 2013-Sesiunea de vara

Subiectul I

1. a

2.

a) 5

b) b∈ {19, 20}

c)

citeste a,b,c (numere naturala, a ≤b, 0 ≤ c ≤ 9 )

s<-0

-pentru x<-a,b executa

| y<-x

| -daca y>0 atunci

| | - repeta

| | | - daca y%10=c atunci

| | | | s<-s+1

| | | |_

| | | y<-[y/10]

| | | pana cand y<=0

| | |_

| |_

|_

scrie s

d)

#include <iostream>

using namespace std;

int main()

{

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

int a,b,c,s,x,y;

do{cout<<"Introduceti un numar natural: a=";cin>>a;}while(a<0);

do{cout<<"Introduceti un numar natural mai mare sau egal ca nr. a: b=";cin>>b;}while(b<0 || b<a);

do{cout<<"Introduceti o cifra: c=";cin>>c;}while(c<0 || c>9);

s=0;

for(x=a;x<=b;x++)

{

y=x;

while(y>0)

{

if(y%10==c)

s++;

y=y/10;

}

}

cout<<s;

return 0;

}

Subiectul II

1. b

2. d

3. if(x.v%2==0)

x.paritate='p';

else

x.paritate='i';

4. 2 si 3

5.

#include <iostream>

using namespace std;

int main()

{

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

unsigned int m,n,i,j,p,s,t,g;

do{cout<<"Introduceti numarul de linii cuprins intre 2 si 50: m=";cin>>m;}while(m<2 || m>50);

do{cout<<"Introduceti numarul de coloane cuprins intre 2 si 50: n=";cin>>n;}while(n<2 || n>50);

unsigned int a[m][n];

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

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

{//cout<<"a["<<i<<"]["<<j<<"]=";

cin>>a[i][j];

}

g=n;

cout<<endl;

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

{ s=a[1][j];

p=1;

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

if(a[i][j]!=s)

p=0;

if(p==1)

cout<<s<<" ";

else

g--;

}

if(g==0)

cout<<"Nu exista";

return 0;

}

Subiectul III

1. c

2. MAAAM MMAMM

3.

#include <iostream>

using namespace std;

void valuri(unsigned int n,int v[100])

{ int a[2*n],b[2*n],i,p=1,t=1,f=1,g=2,s,aux;

for(i=1;i<=2*n;i++)

if(v[i]%2==0)

{a[t]=v[i];

t++;

}

else

{

b[p]=v[i];

p++;

}

do{s=0;

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

if(b[i]>b[i+1])

{

aux=b[i];

b[i]=b[i+1];

b[i+1]=aux;

s=1;

}

}while(s!=0);

do{s=0;

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

if(a[i]<a[i+1])

{

aux=a[i];

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

a[i+1]=aux;

s=1;

}

}while(s!=0);

cout<<"\nsirul par:"<<endl;

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

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

cout<<endl<<"sfarsit sir par"<<endl;

cout<<"\n\n\nsirul impar:"<<endl;

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

cout<<b[i]<<" ";

cout<<endl<<"sfarsit sir impar"<<endl<<endl;

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

{v[f]=b[i];

f=f+2;

}

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

{v[g]=a[i];

g=g+2;

}

}

int main()

{

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

int i,n,v[100];

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

for(i=1;i<=2*n;i++)

{cout<<"v["<<i<<"]=";cin>>v[i];}

valuri(n,v);

cout<<endl<<"Sirul final:"<<endl;

for(i=1;i<=2*n;i++)

cout<<v[i]<<" ";

return 0;

}

4.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

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

ofstream f("bac.txt");

unsigned int x,n,i,t;

do{cout<<"Introduceti un numar natural mai mic ca 100: x=";cin>>x;}while(x>99);

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

int a[n];

a[1]=1;

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

if(i%2==0)

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

else

a[i]=1+2*a[i-2];

i=1;

while(i<=n&&a[i]<x)

i++;

if(i<=n)

if(a[i]==x)

t=i;

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

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

cout<<endl;

for(i=t;i>=1;i--)

{//cout<<a[i]<<" ";

f<<a[i]<<" ";

}

return 0;

}

In tabloul "a", se afla sirul de numere. Am folosit cautarea intr-un sir ordonat. Cand termenul a fost gasit, toti termenii de dinaintea acestuia, inclusiv el, vor fi scrisi in fisier incepand de la termenul gasit pana la primul termen.Algoritum este eficient datorita spatiului de memorare utilizat datorat fiind modul de declarare al variabilelor. Algoritmul este eficient datorita timpului de executare, datorita faptului ca este liniar si de tipul O(n).