Bacalaureat 2015-Sesiunea august-septembrie

Subiecte bac 2015-Sesiunea de toamna

Rezolvare bac 2015-Sesiunea de toamna

Subiectul I

1. a

2.

a) 3 2 1 3 2 1 3

b) 5 si 93

c)

citeste n,k

(numere naturale nenule)

- cat timp n≥1 executa

| -daca n>k atunci i<-k

| | altfel i<-n

| |_

| n<-i

| t<-k

| -repeta

| | scrie t, ' '

| | i<-i-1

| | t<-t-1

| | pana cand i<1

| |_

|_

d)

#include <iostream>

using namespace std;

int main()

{

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

unsigned int n,i,k,t;

do{cout<<"Introduceti n si k numere naturale nenule:"<<endl;

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

cout<<"k=";cin>>k;

}while(n<1 || k<1);

while(n>=1)

{

if(n>k)

{i=k;}

else

{i=n;}

n=n-i;

t=k;

while(i>=1)

{

cout<<t<<" ";

i=i-1;

t=t-1;

}

}

return 0;

}

Subiectul II

1. d

2. b

3. 1 2 5 6 7 10

4. a[i][j]=(i-1)*5+j;

5.

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

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

char a[100];

int p=1,i,v=0;

do{cout<<"a=";cin>>a;

}while(strlen(a)<2 || strlen(a)>100);

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

{

if(a[i]=='a' || a[i]=='o' || a[i]=='u' || a[i]=='e') // if(strchr("aeou",a[i])

p=0;

else

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

v++;

}

if(p==0)

cout<<"NU";

if(v==strlen(a))

cout<<"NU";

if(p==1 && v!=strlen(a))

cout<<"DA";

return 0;

}

Subiectul III

1. b

2. F(2015,2);

3.

#include <iostream>

using namespace std;

int nrPrime(long n)

{

int p=0,c;

while(n)

{

c=n%10;

if(c==2 || c==3 || c==5 || c==7)

p++;

n=n/10;

}

return p;

}

4.

b)

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

ifstream f("BAC.TXT");

int i,s1p=0,s1i=0,s2p=0,s2i=0,n,x;

f>>n;

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

{

f>>x;

if(x%2)

s1i+=x;

else

s1p+=x;

}

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

{

f>>x;

if(x%2)

s2i+=x;

else

s2p+=x;

}

cout<<s1i<<"*"<<s2p<<"+" <<s1p<<"*"<<s2i<<"="<< s1i*s2p+s1p*s2i << endl;

f.close();

return 0;

}

a)

Cu ajutorul variabilei "x" am citit numerele din fisier. Cu ajutorul variabilelor "s1i", "s1p", "s2i", "s2p" am calculat suma elementelor impare, respectiv pare din prima jumatate a fisierului, respectiv din a doua jumatate a fisierului. Suma ceruta este s1i*s2p+s1p*s2i,

Algoritmul este eficient deoarece: nu foloseste un tablou, este liniar, parcurge o singura data fiesierul, este de tipul O(n).