miercuri, 25 aprilie 2012

Probleme bacalaureat matrice

1.Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (1≤n≤100)şi apoi elementele unui tablou bidimensional cu n linii şi n coloane, care memorează numere naturale cu cel mult 9 cifre fiecare; programul afişează pe ecran acele valori din tablou care sunt strict mai mici decât toate elementele cu care se învecinează direct (aflate pe aceeaşi linie dar pe o coloană alăturată sau pe aceeaşi coloană dar pe o linie alăturată).Numerele afişate vor fi separate prin câte un spaţiu.
#include<fstream.h>
#include<string.h>
#include<stdlib.h>
ifstream f("matrice.txt");
long a[101][101];
int n,i,j;
int verifica(int i,int j)
{
long x=a[i][j];
if((i+1<=n)&&
(x>=a[i+1][j]))return 0;
if((i-1>=1)&& (x>=a[i-1][j]))return 0;
if((j-1>=1)&& (x>=a[i][j-1]))return 0;
if((j+1<=n)&&(x>=a[i][j+1]))return 0;
return 1;
}
void main()
{ do{cin>>n;}while(n<=1 ||n>=100);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>a[i][j];
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if (verifica(i,j)==1)
cout<<a[i][j]<<" ";
}

2.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;
}
}

3. Sa se calculeze suma elementelor de pe diagonala principala a unei matrice patratica  si suma elementelor de pe diagonala secunara, de dimensiune n.Elementele matricei sunt numere intregi.

  #include<iostream.h>
 void main()
 {
 int a[10][10],i,j,n,sp=0,ss=0; //ss=suma de pe diagonala principala
 cout<>n; //sp=suma de pe diagonala secundara
 for (i=0;i<n;i++)
 for (j=0;j<n;j++)
  {
  cout<<"a["<<i+1<<","<<j+1<>a[i][j];
  }
 for (i=1;i<n;i++)
  for (j=1;j<n;j++)
  if (i==j) sp+=a[i][j];
 for (i=1;i<n;i++)
 for (j=n+1)
 ss+=a[i][j];
 cout<<"Suma de pe diagonala principala: "<<sp;
 cout<<"Suma de pe diagonala secundara: "<
 }








Niciun comentariu:

Trimiteți un comentariu