PROBLEME REZOLVATE BACALAUREAT INFORMATICA C++
probleme rezolvate bacalaureat informatica partea a 2-a
probleme rezolvate bacalaureat informatica partea a 3-a
-)Scrieti programul C sau C++ care construiete în memorie o matrice p cu n linii si n coloane formata numai din valori 1 si 2 astfel încât elementele de pe diagonala secundara si cea principala sa fie egale cu 1, iar restul elementelor din matrice sa fie egale cu 2
#include<iostream.h>
int n,i,j,a[23][23];
void matrice(int x)
{
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
if(i==j || i==x-j+1)
{
a[i][j]=1;
}
else
{
a[i][j]=2;
}
}
void afis()
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<” “;
cout<<endl;
}
}
{module orizontal600}
void main()
{
cout<<“dati n: “;cin>>n;
matrice(n);
afis();
}
-)Realizati urmatoarele cerinte utilizând limbajul C/C++:
a) Scrieti definitia completa a unui subprogram sub cu doi parametri care:
· primeste prin intermediul parametrilor a si b doua numere naturale formate fiecare din cel mult 8 cifre;
· elimina cifra unitatilor numarului continut de parametrul a, mutând-o la sfârsitul numarului continut de parametrul b;
· returneaza prin intermediul parametrilor a si b noile numere obtinute.
De exemplu, pentru valorile 1234 si 56 ale parametrilor a si b, în urma executarii subprogramului sub valorile returnate prin intermediul parametrilor vor fi 123 si 564.
b) Scrieti programul care citeste de la tastatura un numar natural n cu cel mult 8 cifre si care verifica daca numarul n este un palindrom, folosind apeluri ale subprogramului sub. Programul va afisa pe ecran mesajul DA daca numarul este palindrom, altfel va afisa mesajul NU. (Un numar natural n este palindrom daca este egal cu numarul obtinut prin scrierea cifrelor numarului n în ordine inversa.)
De exemplu, daca n=12321 atunci se va afisa pe ecran mesajul DA, iar daca n=124321 atunci se va afisa pe ecran mesajul N
#include<iostream.h>
long n;
void sub(long &x,long &y)
{
y=y*10+x%10;;
x=x/10;
}
void main()
{
cin>>n;
long a=n;
long b=0;
while(a!=0)
{
sub(a,b);
}
if(n==b)
cout<<“DA”;
else
cout<<“NU”;
}
-)Scrieti programul C sau C++ care citeste de la tastatura un sir de cel mult 30 de litere ale alfabetului englez si creeaza fisierul text BAC.TXT ce contine sirul de caractere dat si toate prefixele acestuia de lungime cel putin 1, fiecare pe câte o linie, în ordinea descrescatoare a lungimii prefixelor. De exemplu, daca se citeste sirul: proba, atunci BAC.TXT va contine:
proba
prob
pro
pr
p
#include<fstream.h>
#include<string.h>
ofstream g(“bac.txt”);
char c[30];
void main()
{
int t,k,i,j;
cin>>c;
t=strlen(c);
k=t;
for(i=0;i<t;i++)
{
for(j=0;j<k;j++)
{
g<<c[j];
}
g<<endl;
k–;
}
}
-) Scrieti programul C sau C++ care construieste în memorie o matrice patratica cu n linii si n coloane formata numai din valori 0,1 si 2 astfel încât elementele de pe diagonala secundara si cea principala sa fie egale cu 0, elementele situate între diagonalele matricei, în partea superioari inferioara acesteia, sa fie egale cu 1, iar restul elementelor din matrice sa fie egale cu 2. Valoarea lui n (numar natural, 2<n<23) se citeste de la tastatura, iar 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 (ca în exemplu).
De exemplu, pentru n=5 se construieste în memorie si se afiseaza matricea:
0 1 1 1 0
2 0 1 0 2
2 2 0 2 2
2 0 1 0 2
0 1 1 1 0
#include<iostream.h>
int a[24][24],i,j,n;
void matrice(int x)
{
for(i=1;i<=x;i++)
for(j=1;j<=x;j++)
if(i>j && x-i+1>j)
a[i][j]=2;
else
if(i>j && x-i+1<j)
a[i][j]=1;
else
if(i<j && x-i+1>j)
a[i][j]=1;
else
if(i<j && x-i+1<j)
a[i][j]=2;
else
if(i==j || i==x-j+i)
a[i][j]=0;
}
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();
}