Feeds:
Articole
Comentarii

Archive for the ‘Matrice’ Category

7. Scrieţi un program Pascal care citeşte de la tastatură un număr natural n (1n6) şi elementele unui tablou bidimensional A cu n linii şi n coloane, care memorează numere naturale nenule mai mici

decât 100, şi afişează pe ecran produsul numerelor “pivot” pentru matricea A.

Un număr natural x este “pivot” pentru matricea A dacă înmulţind fiecare element de pe prima coloană cu numărul x, se obţin, în aceeaşi ordine, elementele unei alte coloane din matrice.

Exemplu: pentru matricea din figura alăturată se afişează 8.

2 7   4   8 4

1  1    2   4  2

3 12   6 12  3

1 22   2   4  2

5 10 10 20 8

#include <iostream>

using namespace std;

int main()
{
int n,i,j,a[6][6],ok;
float rap,p=1;
cout<<„n=”;
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
for (j=1;j<=n;j++)
{
rap=(float)a[1][j]/a[1][1];
ok=1;
i=2;
while (i<=n&&ok==1)
if (rap==(float)a[i][j]/a[i][1])
i++;
else ok=0;
if (ok==1)
p=p*rap;
}
cout<<p;
return 0;
}

9.Scrieţi un program C/C++ care citeşte de la tastatură un număr natural n (1n100)ş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ă), ca în exemplu. Numerele afişate vor fi separate prin câte un spaţiu.

Exemplu: pentru n=4 şi tabloul alăturat se afişează numerele: 2 0 (2 se învecinează direct cu 4, 3, 6 şi 9, şi este mai mic decât acestea, iar 0 se învecinează direct cu 6, 9 şi 1 şi este mai mic decât acestea).

5 4 7 9

6 2 3 4

0 9 8 5

1 3 8 6

 

#include <iostream>

using namespace std;

int main()
{ int n,i,j,a[101][101];
cout <<„n=”;
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
//bordam matricea
for (i=0;i<=n+1;i++)
a[0][i]=a[n+1][i]=a[i][0]=a[i][n+1]=999999999;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (a[i][j]<a[i][j-1]&&
a[i][j]<a[i-1][j]&&
a[i][j]<a[i][j+1]&&
a[i][j]<a[i+1][j])
cout<<a[i][j]<<‘ ‘;
return 0;
}

Read Full Post »

5. Se consideră un tablou bidimensional cu m linii şi n coloane (1<m<100,1<n<100), ale cărui elemente aparţin mulţimii {0,1,2}. Scrieţi un program care citeşte de la tastatură valorile m, n şi elementele tabloului şi care afişează pe ecran numerele de ordine ale coloanelor pentru care produsul elementelor situate pe ele, este maxim. Liniile şi coloanele tabloului se numerotează de la 1 la m respectiv de la 1 la n. Numerele se vor afişa separate prin câte un spaţiu.

Exemplu: pentru m=4 şi n=4 şi tabloul alăturat se va afişa, nu neapărat în această ordine: 1 2

2 1 1 0

1 1 1 1

2 2 2 1

1 2 1 1

 

#include <iostream>

using namespace std;

int main()
{
int a[99][99],m,n,i,j,v[99],max=0;
cout<<„m=”;
cin>>m;
cout<<„n=”;
cin>>n;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
do
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
while (a[i][j]<0 || a[i][j]>2);
for (j=1;j<=n;j++)
{
v[j]=1;
for (i=1;i<=m;i++)
v[j]=v[j]*a[i][j];
if (v[j]>max)
max=v[j];
}
for (j=1;j<=n;j++)
if (v[j]==max)
cout<<j<<‘ ‘;
return 0;
}

 

6. Scrieţi un program care citeşte de la tastatură un număr natural n (2<n10) şi construieşte în memorie o matrice A cu n linii şi n coloane în care toate elementele de pe prima linie, prima şi  ultima coloană au valoarea 1 şi oricare alt element Aij din matrice este egal cu suma a 3 elemente situate pe linia i-1: primul aflat pe coloana j-1, al doilea pe coloana j, iar al treilea pe coloana j+1, ca în exemplu. Matricea va fi afişată pe ecran, linie cu linie, numerele de pe aceeaşi linie fiind separate prin câte un spaţiu.

Exemplu: pentru n=5 , se afişează matricea alăturată.

 

1   1    1   1 1

1    3   3  3  1

1    7   9 7   1

1 17 23 17 1

1 41 57 41 1

#include <iostream>

using namespace std;

int main()
{ int n,i,j,a[9][9];
cout<<„n=”;cin>>n;
for (i=1;i<=n;i++)
{
a[1][i]=1;
a[i][1]=1;
a[i][n]=1;
}
for (i=2;i<=n;i++)
for (j=2;j<n;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]+a[i-1][j+1];
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
cout<<a[i][j]<<‘ ‘;
cout<<endl;
}
return 0;
}

 

Read Full Post »

2.Se consideră tabloul bidimensional cu n linii şi n coloane ce conţine numere naturale cu cel mult patru cifre fiecare. Scrieţi programul care citeşte de la tastatură numărul natural n (2n23) şi cele n*n elemente ale tabloului şi apoi afişează pe ecran elementele primului pătrat concentric, separate prin câte un spaţiu. Pătratul este parcurs în sensul acelor de ceasornic începând din colţul său stânga-sus, ca în exemplu. Primul pătrat concentric este format din prima şi ultima linie, prima şi ultima coloană a tabloului.

Exemplu: pentru n=5 şi tabloul alăturat, se va afişa: 1 2 3 4 5 1 6 2 7 6 5 4 3 7 2 6

1 2 3 4 5

6 7 8 9 1

2 3 4 5 6

7 8 9 1 2

3 4 5 6 7

 

#include <iostream>

using namespace std;

int main()
{
int a[23][23],n,i,j;
cout<<„n=”;
cin>>n;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
for (j=1;j<n;j++) //se afiseaza elementele de pe prima linie (cu exceptia ultimului element de pe prima linie)
cout<<a[1][j]<<‘ ‘;
for (i=1;i<n;i++) //se afiseaza elementele de pe ultima coloana (cu exceptia ultimului element de pe ultima coloana)
cout<<a[i][n]<<‘ ‘;
for (j=n;j>1;j–) //se afiseaza elementele de pe ultima linie (cu exceptia primului element de pe ultima linie)
cout<<a[n][j]<<‘ ‘;
for (i=n;i>1;i–) //se afiseaza elementele de pe prima coloana (cu exceptia primului element de pe prima coloana)
cout<<a[i][1]<<‘ ‘;
return 0;
}

3.Scrieţi un program care citeşte de la tastatură două valori naturale nenule m şi n (m10, n10) şi apoi m*n numere naturale nenule cu cel mult 4 cifre fiecare, reprezentând elementele unei matrice cu m linii şi n coloane. Programul determină apoi valorile minime de pe fiecare linie a matricei şi le afişează pe o linie a ecranului separate prin câte un spaţiu.

Exemplu: pentru m=3, n=5 şi matricea

5 13 7 2 3

9 6 12 9 10

3 6 5 4 7

se afişează pe ecran valorile: 2 6 3 (cea mai mică valoare de pe prima linie a matricei este 2, cea mai mică valoare de pe linia a doua este 6, cea mai mică valoare de pe linia a treia este 3).

#include <iostream>

using namespace std;

int main()
{
int a[10][10],m,n,i,j,min;
cout<<„m=”;
cin>>m;
cout<<„n=”;
cin>>n;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
for (i=1;i<=m;i++) //se parcurg liniile matricei
{
min=a[i][1]; //presupunem ca primul element de pe linia i este cel mai mic dintre elementele liniei i
for (j=2;j<=n;j++) //se parcurg celelalte elemente ale liniei i
if (a[i][j]<min)
min=a[i][j];
cout<<min<<‘ ‘;
}
return 0;
}

 

4.Scrieţi un program care citeşte de la tastatură un număr natural n (2<n<20), construieşte în memorie şi afişează pe ecran o matrice cu n linii şi n coloane, în care fiecare element de pe diagonala secundară are valoarea n, fiecare element aflat deasupra diagonalei secundare este mai mic cu o unitate decât vecinul aflat pe aceeaşi linie în dreapta lui şi fiecare element aflat sub diagonala secundară este mai mare cu o unitate decât vecinul aflat pe aceeaşi linie în stânga lui.

Elementele matricei vor fi afişate pe ecran, câte o linie a matricei pe câte o linie a ecranului cu câte un spaţiu între elementele fiecărei linii.

Exemplu: pentru n=5 se va afişa matricea alăturată.

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

5 6 7 8 9

#include <iostream>

using namespace std;

int main()
{
int a[19][19],n,i,j;
cout<<„n=”;
cin>>n;
for (i=1;i<=n;i++) //se parcurg elementele de pe diagonala secundara
a[i][n+1-i]=n;
for (i=1;i<n;i++) //se parcurg elementele de deasupra diagonalei secundare
for (j=n-i;j>=1;j–)
a[i][j]=a[i][j+1]-1;
for (i=2;i<=n;i++) //se parcurg elementele de sub diagonala secundara
for (j=n-i+2;j<=n;j++)
a[i][j]=a[i][j-1]+1;
for (i=1;i<=n;i++)
{for (j=1;j<=n;j++)
cout<<a[i][j]<<‘ ‘;
cout<<endl;
}
return 0;
}

Read Full Post »

Scrieţi un program care citeşte de la tastatură două numere naturale n şi p (2n15, 1p15) şi construieşte în memorie un tablou bidimensional cu n linii şi p coloane. Tabloul va fi construit astfel încât, parcurgând matricea linie cu linie de sus în jos şi fiecare linie de la stânga la dreapta, să se obţină şirul primelor n*p pătrate perfecte impare, ordonat strict crescător, ca în exemplu. Tabloul astfel construit va fi afişat pe ecran, fiecare linie a tabloului pe câte o linie a ecranului, cu câte un spaţiu între elementele fiecărei linii.

Exemplu: pentru n=2, p=3 programul va afişa tabloul alăturat:

1 9 25

49 81 121

#include <iostream>

using namespace std;
int main()
{ int a[15][15],n,p,i,j,k=1;

cout<<„n=”;
cin>>n; // se citeste numarul liniilor
cout<<„p=”;
cin>>p; // se citeste numarul coloanelor
for (i=1;i<=n;i++) // se construieste matricea
for (j=1;j<=p;j++)
{
a[i][j]=k*k;
k+=2;
}
for (i=1;i<=n;i++) // se afiseaza matricea
{

for (j=1;j<=p;j++)
cout<<a[i][j]<<‘ ‘;
cout<<endl;
}

return 0;
}

Read Full Post »

Problema 1 matrice

Se citeşte de la tastatură o matrice a cu m linii şi n coloane.Să se afişeze produsul elementelor pozitive aflate pe linii pare şi coloane impare.

Rezolvarea:

#include <iostream>

using namespace std;

int main()
{
int a[10][15],m,n,i,j,p=1;

cout<<„m=”;
cin>>m;           //se citeste numarul real al liniilor
cout<<„n=”;
cin>>n;           //se citeste numarul real al coloanelor
//se citesc elementele din matrice
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
{
cout<<„a[„<<i<<„][„<<j<<„]=”;
cin>>a[i][j];
}
for (i=2;i<=m;i+=2) // se parcurg liniile pare
for (j=1;j<=n;j+=2) // se parcurg coloanele impare
if (a[i][j]>0) // se verifica daca elementul curent este pozitiv
p=p*a[i][j]; // se adauga la produs elementul care indeplineste conditiile problemei
cout<<p;
return 0;
}

Read Full Post »

Probleme matrice

Probleme matrice selectate din variantele de bacalaureat:

problemematricebac

Read Full Post »

Grile matrice

test3

testculmov

TESTUL 8

Read Full Post »

Se dă o matrice a cu m linii și n coloane și elemente numere naturale. Se cere să se afișeze coordonatele vârfurilor. Spunem despre un element că este vârf dacă este strict mai mare decât toți vecinii săi.

var a:array[0..15, 0..15] of word;

i,j,m,n:byte;

begin

write(‘m=’); readln(m);

write(‘n=’); readln(n);

for i:=0 to m+1 do

for j:=0 to n+1 do

a[i,j]:=0;

for i:=1 to m do

for j:=1 to n do

begin

write(‘a[‘,i,’,’,j,’]=’);

readln(a[i,j])

end;

for i:=1 to m do

for j:=1 to n do

if (a[i,j]>a[i-1,j-1]) and (a[i,j]>a[i-1,j]) and (a[i,j]>a[i-1,j+1]) and (a[i,j]>a[i,j-1]) and (a[i,j]>a[i,j+1]) and (a[i,j]>a[i+1,j-1]) and (a[i,j]>a[i+1,j]) and (a[i,j]>a[i+1,j+1]) then writeln(‘(‘,i,’,’,j,’)’);

end.

Se dă o matrice a cu m linii și n coloane și elemente numere întregi și un vector v cu n elemente numere întregi. Să se verifice dacă vectorul v apare ca linie în matrice afișându-se un mesaj corespunzător.

var a:array[1..20,1..30] of integer;

v:array[1..30] of integer;

m,n,i,j,k:byte; identic:boolean;

begin

write(‘m=’);readln(m);

write(‘n=’);readln(n);

for i:=1 to m do

for j:=1 to n do

begin

write(‘a[‘,i,’,’,j,’]=’);

readln(a[i,j])

end;

for i:=1 to n do

begin

write(‘v[‘,i,’]=’);

readln(v[i])

end;

k:=0;

for i:=1 to m do

begin

identic:=true;

for j:=1 to n do

if v[j]<>a[i,j] then identic:=false;

if identic then begin

write(i,’ ‘ );

k:=k+1

end;

end;

if k=0 then writeln(‘Vectorul nu apare ca linie in matrice’)

end.

Să se construiască și să se afișeze o matrice A cu m (2<=m<=10) linii și n (2<=n<=10) coloane astfel încât fiecare element din matrice va fi egal cu cea mai mică dintre valorile i – linia și j – coloana.

var a:array[1..10,1..10] of byte;

i,j,m,n:byte;

begin

repeat

write(‘m=’);readln(m);

until (2<=m) and (m<=10);

repeat

write(‘n=’);readln(n);

until (2<=m) and (m<=10);

for i:=1 to m do

for j:=1 to n do

if i<j then a[i,j]:=i

else a[i,j]:=j;

for i:=1 to m do

begin

for j:=1 to n do

write(a[i,j],’ ‘);

writeln

end

end.

Read Full Post »

Problema 4 din tablouri_bidimensionale.doc

O matrice pătratică cu n linii * n coloane se numeşte triunghiulară superior dacă toate elementele aflate sub diagonala principală sunt nule.

Se citeşte de la tastatură o matrice pătratică a cu n linii * n coloane.Realizaţi un program care verifică dacă matricea este triunghiulară superior, tipărind un mesaj.

triung_sup:=true;

for i:=2 to n do

for j:=1 to n-i do

if a[i,j]<>0 then triung_sup:=false;

if triungh_sup then writeln(‘Matricea este triunghiulara superior’)

else writeln(‘Matricea nu este triunghiulara superior’)

Problema 7 din tablouri_bidimensionale.doc

Se citeşte de la tastatură o matrice a cu m linii şi n coloane.Să se elimine din matrice o linie dată x, fără a folosi alte matrice.

write(‘x=’); readln(x);

for i:=x to m-1 do
for j:=1 to n do
a[i,j]:=a[i+1,j];
m:=m-1;

Problema 12 din tablouri_bidimensionale.doc

Se citeşte de la tastatură o matrice a cu m linii*n coloane şi elemente numere întregi.Să se memoreze într-un vector b sumele elementelor de pe fiecare linie a matricei (b[i] va reprezenta suma elementelor de pe linia i în matrice).

for i:=1 to m do
begin
b[i]:=0;
for j:=1 to n do
b[i]:=b[i]+a[i,j];
end;

for i:=1 to m do

write(b[i],’ ‘);

Problema 13 din tablouri_bidimensionale.doc

Se citeşte de la tastatură o matrice a cu m linii*n coloane şi elemente numere întregi.Să se copieze într-un vector elementele pozitive aflate deasupra diagonalei principale în matrice, apoi să se tipărească vectorul.

k:=0;

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i,j]>0 then begin

k:=k+1;

v[k]:=a[i,j]

end;

for i:=1 to k do

write(v[i],’ ‘);

Problema 14 din tablouri_bidimensionale.doc

Pentru o matrice dată a cu m linii*n coloane şi elemente numere întregi, să se interschimbe între ele două linii date L1 şi L2, fără a folosi altă matrice.

for j:=1 to n do

begin

aux:=a[l1,j];

a[l1,j]:=a[l2,j];

a[l2,j]:=aux

end;

Read Full Post »

Probleme matrice

Alt set de probleme cu matrice. Sunt din variantele de BAC de anul trecut. Mai găsiți probleme cu matrice în restul variantelor la II.

matrice2

Read Full Post »

Older Posts »