PROBLEME REZOLVATE BACALAUREAT INFORMATICA C++

probleme rezolvate bacalaureat informatica partea intai

probleme rezolvate bacalaureat informatica partea a doua

VARIANTA 4
4.III.1Scrieţi programul C sau C++ care citeşte de la tastatura un număr natural impar n (2<n<23) şi construieşte în memorie o matrice pătratică cu n linii şi n coloane formată numai din valori 1, 2 şi 3 astfel încât elementele din matrice pe coloana mediană (situată în mijlocul matricei) şi linia mediană s fie egale cu 1, elementul situat la intersec ia liniei i coloanei mediane s fie egal cu 2, iar restul elementelor din matrice s fie egale cu 3. Matricea se va afi a pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spa ii între elementele fiec rei linii (ca în exemplu).
De exemplu, pentru n=5 se construieşte în memorie şi se afişează matricea:

3 3 1 3 3
3 3 1 3 3
1 1 2 1 1
3 3 1 3 3
3 3 1 3 3

#include<iostream.h>
int a[23][23],i,j,n;
void matrice(int n)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==(n+1)/2)
a[i][j]=1;
else
if(j==(n+1)/2)
a[i][j]=1;
else
a[i][j]=3;
a[(n+1)/2][(n+1)/2]=2;
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

VARIANTA 5
5.III.1.Scrieţi programul C sau C++ care citeşte de la tastatura un număr natural n (2<n<30) şi construieşte în memorie o matrice patratica cu n linii si n coloane format numai din valori ce apartin multimii {1,2,3,...,n} astfel încât elementele din matrice situate pe diagonala secundara sa fie egale cu n, elementele situate pe celelalte două "semidiagonale" paralele cu diagonala secundara şi alăturate diagonalei secundare să fie egale cu n-1, elementele situate pe următoarele două "semidiagonale" paralele cu diagonala secundar , de o parte si de alta a acesteia, sa fie egale cu n-2 etc. Matricea se va afisa pe ecran, câte o linie a matricei pe câte o linie a ecranului, cu spatii între elementele fiecarei linii

#include<iostream.h>
int a[30][30],i,j,n;
void matrice(int x)
{
int k=1,l=1;
int y=x;
for(int m=1;m<=x;m++)
{
for(i=1;i<=x;i++)
{
for(j=1;j<=x;j++)
{
a[x-j+k][j]=y;
a[x-j+l][j]=y;
}
}
k++;
l--;
y--;
}
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
void main()
{
cout<<"dati n: ";cin>>n;
matrice(n);
afis();
}

5.III.2.Se defineste subprogramul sub cu doi parametri, subprogram care primeste prin intermediul parametrului n un numar natural de cel mult opt cifre si prin intermediul parametrului k o cifra . Subprogramul determină eliminarea primei apariţii a cifrei k în numărul n şi returnează numărul obţinut prin intermediul parametrului n. De exemplu, pentru valorile n=152422 şi k=2 ale parametrilor, în urma apelului subprogramului sub, parametrul n va returna valoarea 15422. Daca cifra k nu apare în scrierea numarului n, atunci valoarea lui n nu se modifica .
a) Scrieti defini ia completa a subprogramului sub. 
b)Scrieţi în limbajul C sau C++ programul în care se citesc de la tastatura două numere naturale nenule a şi b cu cel mult opt cifre. Programul va determina şi va afişa pe ecran numărul de cifre distincte ce intra atât în scrierea lui a cât si în scrierea lui b, fara a accesa cifrele numerelor a si i b, folosind apeluri ale subprogramului sub.
De exemplu, pentru valorile a=1237248 şi b=1245823 programul va determina afişarea pe ecran a valorii 5 deoarece sunt cinci cifre distincte (1,2,3,4 si 8) ce apar atât în scrierea lui a cât si în scrierea lui b

#include<iostream.h>
#include<math.h>
int sub(long n,int k)
{    
n=n*10;
long n2=n;
int h=0;
int l=log10(n)+1;
int x=l;
while(x>0 && h==0)
{
long ok2=pow(10,x);
long ok=n/ok2;
long ok1=ok%10;
if(ok1 == k)
{            
long y;
y=n%ok2;
n=n/10;
n=n-n%ok2;
n=n+y;
h++;
}
x--;
}
if(n2!=n)
return n/10;
else
return 0;
}
void main()
{
int i=0,j=0,nr=0;
long a,b,v[10];
cout<<"dati a: ";cin>>a;
cout<<"dati b: ";cin>>b;
while(b>0)
{
i++;
v[i]=b%10;

b=b/10;
}
int k;
int nr2=i;
for(j=1;j<i;j++)
for(k=j+1;k<=i;k++)
if(v[k]==v[j])
{
v[k]=0;
nr2--;
}
for(j=1;j<i;j++)
for(k=j+1;k<=i;k++)
if(v[k]>v[j])
{
int aux=v[k];
v[k]=v[j];
v[j]=aux;
}
for(j=1;j<=nr2;j++)
if(sub(a,v[j]))
nr++;
cout<<nr;    
}

5.III.3.Scrieţi programul C sau C++ care citeşte de la tastatura un şir s de cel mult 30 de litere şi o litera c; programul determin dublarea fiecarei aparitii a literei c în s si scrie noul sir obtinut în fisierul text BAC.TXT.De exemplu, daca se citeste sirul: alfabetar si caracterul a atunci fisierul BAC.TXT va contine sirul: aalfaabetaar.

#include<fstream.h>
#include<string.h>
ofstream g("bac.txt");
char a[30],b[60],c;
int i,l,j,k,n;
void citire()
{
cin>>a;
}
void fct2()
{
for(i=0;i<strlen(a);i++)
b[i]=a[i];
int o=0;
k=strlen(a);
for(i=0;i<strlen(a);i++)
{
if(a[i]==c)
{
k++;
o++;
for(j=i;j<k;j++)
b[j+o]=a[j];
b[j]=a[i];
}
}
}
void main()
{
citire();
cout<<"dati c: ";cin>>c;
fct2();
for(i=0;i<k;i++)
g<<b[i];
}

probleme rezolvate bacalaureat informatica partea intai

probleme rezolvate bacalaureat informatica partea a doua