Sesiunea iunie-iulie

Subiecte bac 2017-Sesiunea de vara

Rezolvare bac 2017-Sesiunea de vara

Subiectul I

1. a

2.

a) #2#1#3#2#

b) 50

c) citeste n

(numar natural nenul)

i<-1

-cat timp i≤n executa

| -pentru j<-1,n executa

| | -daca i=j sau i+j=n+1 atunci

| | | scrie '#'

| | | altfel

| | | scrie j

| | |_

| |_

| i<-i+1

|_

d)

#include <iostream>

using namespace std;

int main()

{

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

int i,j,n;

cin>>n;

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

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

if(i==j || i+j==n+1)

cout<<'#';

else

cout<<j;

return 0;

}

Subiectul II

1. b

2. c

3. cout<<x.nume[0]<<endl<<(float)(x.media1+x.media2)/2;

4.

0 1 0 0 0

0 0 1 0 0

1 1 0 0 0

0 0 0 0 1

0 0 0 1 0

5.

#include <iostream>

using namespace std;

int main()

{

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

int i,j,n,m;

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

cout<<"m=";cin>>m;

int a[50][50];

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

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

cin>>a[i][j];

cout<<endl;

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

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

if(i==0 || j==m-1 || i==n-1 || j==0)

a[i][j]=a[n-1][m-1];

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

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

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

cout<<endl;

}

return 0;

}

Subiectul III

1. b

2. f(3,9)=3

f(1,1000)=25

3.

#include <iostream>

using namespace std;

void duplicare(int &n)

{

int a[8]={-1},i=0;

while(n)

{

if(n%2==0)

{

a[i+1]=n%10;

a[i]=n%10/2;

i++;

}

else

a[i]=n%10;

n=n/10;

i++;

}

for(i;i>=0;i--)

n=n*10+a[i];

}

4.

b)

#include <iostream>

#include <fstream>

using namespace std;

int main()

{

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

ifstream f("bac.txt");

int x,nrc=0,nrmax=0,nrsec=0;

while(f>>x)

{

if(x%2==0)

nrc++;

else

nrc=0;

if(nrmax<nrc&&nrc>1)

{nrmax=nrc;

nrsec=0;

}

if(nrmax==nrc)

nrsec++;

}

cout<<nrsec;

f.close();

return 0;

}

a)

Cu ajutorul variabilei "x" am citit numerele din fisier. Daca numarul citit din fisier este par inseamna ca este posibil sa inceapa o secventa de numere pare. Astfel cu ajutorul variabilei "nrc" contorizez numarul de numere pare din secventa curenta. Daca numarul citit nu este par, numarul de numere pare din secventa actuala se reseteaza. Adica, valoarea variabilei "nrc" devine 0. Variabila "nrmax" retine numarul de numere din cea mai lunga secventa de numere pare. Variabila "nrsec" retine numarul de secvente de numere pare formate din "nrmax" termeni. Daca valoarea variabilei "nrc" este mai mare ca 1 inseamna ca a inceput o secventa de numere pare, iar daca aceasta valoare este mai mare si decat valoarea variabilei "nrmax" inseamna ca avem o secventa de numere pare mai lunga decat orice alta secventa precedenta, astfel variabila "nrmax" ia valoarea variabilei "nrc", iar numarul de secvente maximale se reseteaza, adica valoarea variabilei "nrsec" devine 0. Daca valoarea variabilei "nrmax" este egala cu valoarea variabilei "nrc" atunci inseamna ca avem inca o secventa de numere pare formata din "nrmax" termeni.

Programul este eficient deoarece: este liniar, nu foloseste un tablouri pentru memorarea termenilor sirului, parcurge o singura data fisierul,este de tipul O(n).