PROBLEME REZOLVATE BACALAUREAT 2007
VARIANTA 14
SUBIECTUL III
1. Pe prima linie a fisierului text numere.txt se afla o valoare naturala (0<n<=100) iar pe urmatoarea linie se afla exact n valori naturale distinctre de cel mult 4 cifre fiecare, valori despartite prin cate un spatiu. Scrieti programul c++ care afiseaza pe ecran toate numerele prime de pe a doua linie a fisierului, in ordine crescatoare a valorii lor. Numerele vor fi afisate pe cate o linie separate prin spatiu.
#include<fstream.h>
#include<math.h>
ifstream f(“numere.txt”);
int b[101],i,j,n,a[101],aux;
int prim(int x)
{
if(x==1)
return 0;
else
{
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
}
return 1;
}
void citire()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
}
}
void main()
{
citire();
for( int k=1;k<=n;k++)
if(prim(a[k]))
{
j++;
b[j]=a[k];
}
for(i=1;i<j;i++)
for(k=i+1;k<=j;k++)
if(b[i]>b[k])
{
aux=b[i];
b[i]=b[j];
b[j]=aux;
}
for(i=1;i<=j;i++)
cout<<b[i]<<” “;
}
2. Scrieti un program eficient din punct de vedere al timpului de executare si al spatiului de memorie, care citeste de la tastatura un numar natural n (n<=1000) si afiseaza pe ecran cel de-al n-lea termen al sirului: 1, 1,2,2, 1,2,3,3,3, 1,2,3,4,4,4,4, …construit astfel: prima grupa este formata din 1, a doua grupa este formata din 1 urmat de 2 de doua ori etc
#include<iostream.h>
int n,i,s1,s2,gr;
void f()
{
cin>>n;
for(i=1;i<=n;i++)
if(i%2==1)
{
gr++;
s2+=i;
if(s2>=n)
{
s1=s2-i;
i=n+1;
}
}
if(n-s1<(float)(s2-s1)/2)
cout<<n-s1;
else
cout<<gr;
}
void main()
{
f();
}
3. Scrieti un program c++ care construieste in memorie o matrice patratica cu n linii si n coloane formata astfel:elementele de pe diagonala principala sunt toate nule;elementele de pe linia i (1<=i<=n) , aflate deasupra diagonalei principale au valoarea egala cu i; elementele de pe coloana i (1<=i<=n) aflate sub diagonala principala au valoarea egala cu i. Valaorea lui n ( numar natural, 2<n<=50) se citeste de la tastura, iar matricea construita se afiseaza pe ecran.
#include<iostream.h>
int a[51][51],i,j,n;
void matrice(int x)
{
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
if(i==j)
a[i][j]=0;
else
if(i<j)
a[i][j]=i;
else
if(i>j)
a[i][j]=j;
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<” “;
cout<<endl;
}
}
void main()
{
cin>>n;
matrice(n);
afis();
}