Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

Examenul de bacalaureat naţional 2020

Proba E. d)
Informatică
Limbajul C/C++
Testul 3

Subiectul I
1. d
2. b
3. b
4. c
5. a

Subiectul al II-lea
1. a. 1 275
b. 57, 75
c. int main( )
{ int n, c1, c2, s;
cout<< “n=”;
cin>>n;
c1=n%10;
n=n/10;
c2=n%10;
if ( c1==c2)
s=0;
else
if ( c1>c2)
s=1;
else
s=-1;
do{ c1=n%10;
n=n/10;
c2=n%10;
}while ( ( c1-c2)*s>0);
cout<<s<< ‘ ‘ << n;
return 0;
}
d. citeste n
c1←n%10
n←n/10
c2←n%10
daca c1=c2 atunci s←0
altfel
daca c1>c2 atunci s←1
altfel s←-1
c1←n%10
n←n/10
c2←n%10
cat timp (c1-c2)*s>0 executa
{ c1←n%10
n←n/10
c2←n%10
}
scrie s, ‘ ‘ , n

2. float c1x, c1y, c2x, c2y, m, n;


m= sqrt( pow(c1x,2)+pow(c1y,2));
n= sqrt( pow(c2x, 2)+pow(c2y,2));
if (m<n)
cout<< c1x<<’ ’<<c1y;
else
cout<<c2x<< ‘ ‘<<c2y;

3. k=0;
aux= ‘.’;
for ( i=1; i<=7; i++)
{ cin>>a;
if (a!= ‘A’)
if ( aux!= ‘A’&& a== ‘I’)
k++;
else
if ( a!= ‘I’)
k++;
else
if (aux != ‘I’)
k++;
aux=a;
}

Subiectul al III-lea

1. citeste n, m (numere naturale nenule)


d←2
a←0
cat timp n>1 si m>1 executa
{ k←0
ok←0
cat timp n%d=0 executa
n←n/d
k←1
cat timp m%d=0 executa
m←m/d
ok←1
daca k=1 si ok=1 atunci
a←a+1
d←d+1
}
scrie a

2. int main ( )
{ int n, k, v[21], i, m=1, p=1;
cout<< “n=”;
cin>>n;
cout<<”k=”;
cin>>k;
v[k]=0;
for (i=k+1; i<=n; i++)
{v[i]=m; //v[i]=v[i-1]+1;
m++; //
}
for( i=k-1; i>=1; i--)
{ v[i]=p; //v[i]=v[i+1]+1;
p++; //
}
for (i=1; i<=n; i++)
cout<<v[i]<< ‘ ‘;
return 0;
}

3. a) #include<iostream.h>
#include<fstream>
using namespace std;
int main ( )
{ long x, l, b=0, k=0;
ifstream fin (“bac.txt”); //nu functioneaza corespunzator!! -5p
while ( fin>>x)
{ if (x<0 && k==0)
{ b=1;
k=1;
}
if (k!=0)
{ b++;
if( x<0)
l=b;
}
}
cout<<l;
fin.close();
return 0;
}
b) Algoritmul utilizat cauta prima data primul numar negativ din fisier. In momentul in care l-a gasit,
acesta incepe sa numere cate numere sunt in fisier, de fiecare data cand intalneste un numar negativ
retinand lungimea secventei in variabila l. Acest algoritm prezinta eficienta din punct de vedere al
spatiului de memorie si al timpului de executie. De ce?? Memorie – nu utilizez tablouri Timp –
prelucreaz numerele pe masura preluarii din fisier

lungimea maximă a unei secvenţe a şirului care fie începe, fie se încheie cu un număr negativ

12 25 6 7 80 -75 101 -6 52 -124 87 99 210 //secventa incepe cu pozitiv si se incheie negativ

int main()
{ifstream fin("bac.in");
int x,pplus=-1,uplus=-1,pminus=-1,uminus=-1,k=0;
while(fin>>x)
{k++;
if(x<0) if(pminus==-1) pminus=k;
else uminus=k;
}
int b=uminus-pminus+1;
cout << b;
return 0;
}

You might also like