Bacalaureat 2010-Sesiunea august-septembrie

Subiecte bac 2010-Sesiunea de toamna

Rezolvare bac 2010-Sesiunea de toamna

Subiectul I

1. a

2.

a) 44543

b) 420; 820; 920

c) citeste n (numar natural nenul)

m<-0

-cat timp n>0 executa

| c<-n%10

| n<-[n/10]

| -daca c>5 atunci

| | c<[c/2]

| |_

|

| m<-m*10+c

|_

scrie m

d)

#include <iostream>

using namespace std;

int main()

{

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

unsigned int n,m,c;

cin>>n;

m=0;

do

{

c=n%10;

n=n/10;

if(c>5)

c=c/2;

m=m*10+c;

}while(n!=0);

cout<<m;

return 0;

}

Subiectul II

1. Observatie: Centrul cercului se afla pe prima bisectoare.

FIG.centru.x==FIG.centru.y ;

2. b

3. for(i=0;i<5;i++)

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

a[i][j]=i+5*j+1;

4. 4, 8,3

5.

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

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

char a[101];

int i,j,t;

cout<<"Introduceti textul: ";cin.get(a,100);

for(i=0;i<strlen(a);i++)

if(a[i]=='.')

{ t=i;

j=i;

//while(a[t]!=' '&& t>=0)

//{

// a[t]=' ';

// t--;

//}

a[i-1]=' ';

while(a[j]!=' '&& j<=strlen(a))

{a[j]=' ';

j++;

}

}

cout<<a;

cout<<"\nt="<<t<<endl<<"j="<<j;

return 0;

}

Subiectul III

1. d

2. (garoafa, frezie, mac, lalea, narcisa)

(garoafa, frezie, mac, narcisa, lalea)

3.

#include <iostream>

using namespace std;

void tablou(unsigned int n,unsigned int k,int a[400])

{ int i,j,t=0;

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

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

{

a[t]=i;

t++;

}

}

4.

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

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

ifstream f("BAC.TXT");

int i=0,j=0,n,nrf=0,nrap=0,t=0,s=0,aux,a[10000];

while(f>>n)

{nrf++;

a[i]=n;

i++;

}

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

{for(j=0;j<nrf;j++)

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

nrap++;

if(nrap==1)

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

nrap=0;

}

f.close();

return 0;

}

Am citit numerele din fisier si am numarat cu ajutorul variabile "nrf", numarul de numere din fisier. Fiecare numar din fisier l-am pus in tabloul a[10000]. Pentru fiecare element din tablou am numarat numarul de aparitii al acestuia cu ajutorul variabile "nrap". Daca numarul de aparitii este 1, atunci inseamna ca numarul este unic Afisez acest numar.

Observatie:

Algoritmul de mai sus nu este eficient. O metoda eficienta de rezolvare ar fi urmatoarea: Declaram la inceput tabloul "a" cu toate valorile pozitiilor nule. De fiecare data cand citim un numar "n" din fisier, numarul de aparitii al acestuia este contorizat in tabloul a, prin comanda "a[n]++;" Pentru a afisa elementele unice, parcurgem tabloul "a" si afisam pozitiile ale caror valori este 1.