Sunteți pe pagina 1din 13

//5.

Se citesc de la tastatura elementele unei matrici


//de caractere (nr. linii=nr. coloane), A(NXN), N<=10.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
char A[10][10];
int N;

cout<<"Introduceti dimensiunea matricii: ";


cin>>N;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
cout<<"A["<<i+1<<"]["<<j+1<<"]=";
cin>>A[i][j];
}

//a) Sa se afiseze matricea A;

cout<<"\nMatricea A:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//b) Sa se formeze si sa se afiseze cuvantul format din caracterele


//de pe diagonala principala a matricii A;

cout<<"\nCuvantul format din caracterele de pe diagonala\


principala:\n";
for (int i=0; i<N; i++)
cout<<A[i][i];

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();

//c) Sa se calculeze si sa se afiseze numarul de litere mari,


//litere mici si cifre din matrice;

int lmare=0, lmic=0, cif=0, alt=0;


for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
if (isupper(A[i][j]))
lmare++;
else if (islower(A[i][j]))
lmic++;
else if (isdigit(A[i][j]))
cif++;
else
alt++;

cout<<"\n\nMatricea A contine:\n";
cout<<"\t"<<lmare<<" litere mari\n";
cout<<"\t"<<lmic<<" litere mici\n";
cout<<"\t"<<cif<<" cifre\n";
cout<<"\tsi "<<alt<<" alte caractere\n";

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//d) Sa se afiseze cuvantul format din caracterele aflate pe diagonala


//secundara;

cout<<"\n\nCuvantul format din caracterele de pe diagonala\


secundara:\n";
for (int i=0; i<N; i++)
cout<<A[i][N-i-1];

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();

//e) Sa se afiseze procentul literelor mari, al literelor mici


//si al cifrelor de pe cele 2 diagonale;

cout<<"\nMatricea A:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

lmare=0, lmic=0, cif=0;


for (int i=0; i<N; i++)
if (isupper(A[i][i]))
lmare++;
else if (islower(A[i][i]))
lmic++;
else if (isdigit(A[i][i]))
cif++;
else
alt++;

cout<<"\n\nProcentul literelor mari, mici si cifrelor de pe\


diagonala principala:\n";
cout<<"\t"<<100.0*lmare/N<<"% litere mari\n";
cout<<"\t"<<100.0*lmic/N<<"% litere mici\n";
cout<<"\t"<<100.0*cif/N<<"% cifre\n";

lmare=0, lmic=0, cif=0;


for (int i=0; i<N; i++)
if (isupper(A[N-i-1][i]))
lmare++;
else if (islower(A[N-i-1][i]))
lmic++;
else if (isdigit(A[N-i-1][i]))
cif++;
else
alt++;

cout<<"\nProcentul literelor mari,mici si cifrelor de pe diagonala\


secundara:\n";
cout<<"\t"<<100.0*lmare/N<<"% litere mari\n";
cout<<"\t"<<100.0*lmic/N<<"% litere mici\n";
cout<<"\t"<<100.0*cif/N<<"% cifre\n";

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//f) Sa se afiseze caracterele comune aflate pe liniile


//p si q (p, q < N, p si q citite de la tastatura);

cout<<"\nMatricea A:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

int p, q;

cout<<"\n\np=";
cin>>p;
cout<<"q=";
cin>>q;

cout<<"Caracterele comune de pe liniile "<<p<<" si "<<q<<" :\n";


for (int j=0; j<N; j++)
for (int k=0; k<N; k++)
if (A[p-1][j]==A[q-1][k])
cout<<A[p-1][j];

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();

//g) Sa se afiseze in ordine alfabetica, crescatoare, literele mari


//aflate pe coloanele impare.

cout<<"\nMatricea A:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

//formam un vector care va contine literele mari de poe coloanele impare


//v -> vectorul, si k numarul de elemente din vector
char v[50];
int k=0;
for (int i=0; i<N; i++)
for (int j=0; j<N; j+=2)
if (isupper(A[i][j]))
{
v[k]=A[i][j];
k++;
}

//ordonam crescator elementele vectorului v cu algoritmul bubble sort


int gata=0;
char aux;
while (!gata)
{
gata=1;
for (int i=0; i<k-1; i++)
if (v[i]>v[i+1])
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
gata=0;
}
}

cout<<"\n\nLiterele mari de pe coloanele impare in ordine\


crescatoare:\n";
for (int i=0; i<k; i++)
cout<<v[i]<<" ";
}
//6. Se citesc de la tastaturã elementele unei matrici cu elemente reale,
//B(N X N), N<=8.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
double B[10][10], BT[10][10], A[10][10], aux[10][10],
v[100], C[10][10], D[10][10];
long double p=1, s=1;
int N;

cout<<"Introduceti dimensiunea matricii: ";


cin>>N;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
cout<<"B["<<i+1<<"]["<<j+1<<"]=";
cin>>B[i][j];
}

//a) Sa se afiseze matricea B;

cout<<"\nMatricea B:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<B[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//b) Sa se calculeze si sã se afiseze produsul elementelor de pe


//coloanele impare;

for (int i=0; i<N; i++)


for (int j=0; j<N; j+=2)
p *= B[i][j];

cout<<"\n\nProdusul elementelor de pe coloanele impare: "<<p;

cout<<"\n...Apasa o tasta pentru a continua...";


getch();

//c) Sa se calculeze si sa se afiseze matricea A, unde: A = (B + BT)^2;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
BT[i][j]=B[j][i];
//aux = B + BT
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
aux[i][j] = B[i][j]+ BT[i][j];
//A = aux * aux;
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
{
A[i][j]=0;
for (int k=0; k<N; k++)
A[i][j] += aux[i][k]*aux[k][j];
}

cout<<"\n\nMatricea A = (B + BT)^2:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//d) Sa se formeze si sa se afiseze vectorul V, ale carui elemente


//sunt elementele pozitive din matricea B;

int k=0;
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
if (B[i][j]>=0)
{
v[k]=B[i][j];
k++;
}

cout<<"\n\nVectorul cu elementele pozitive din matricea B:\n";


for (int i=0; i<k; i++)
cout<<v[i]<<" ";

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//e) Sa se calculeze si sa se afiseze sumele si produsele


//elementelor matricii B, aflate în triunghiurile hasurate:
// ------- ------ ------ ------
// |\x x/| |\ /| | /| |\xxx|
// | \ / | |x\/ | | /x| | \xx|
// | / \ | |x/\ | | /xx| | \x|
// |/ \| |/ \| |/xxx| | \|
// ------- ------ ------ ------

s=0; p=1;
for (int i=0; i<N; i++)
for (int j=i; j<N-i; j++)
{
s += B[i][j];
p *= B[i][j];
}

cout<<"\n\nSuma elementelor din primul triunghi: "<<s;


cout<<"\nProdusul elementelor din primul triunghi: "<<p;

s=0; p=1;
for (int j=0; j<N; j++)
for (int i=j; i<N-j; i++)
{
s += B[i][j];
p *= B[i][j];
}

cout<<"\n\nSuma elementelor din al doilea triunghi: "<<s;


cout<<"\nProdusul elementelor din al doilea triunghi: "<<p;

s=0; p=1;
for (int j=0; j<N; j++)
for (int i=N-j-1; i<N; i++)
{
s += B[i][j];
p *= B[i][j];
}

cout<<"\n\nSuma elementelor din al treilea triunghi: "<<s;


cout<<"\nProdusul elementelor din al treilea triunghi: "<<p;

s=0; p=1;
for (int i=0; i<N; i++)
for (int j=i; j<N; j++)
{
s += B[i][j];
p *= B[i][j];
}

cout<<"\n\nSuma elementelor din al patrulea triunghi: "<<s;


cout<<"\nProdusul elementelor din al patrulea triunghi: "<<p;

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();

//f) Sa se calculeze procentul elementelor pozitive aflate pe diagonala


//secundara;

int poz=0;
for (int i=0; i<N; i++)
if (B[i][N-i-1]>=0)
poz++;

cout<<"\n\nProcentul elementelor pozitive de pe diagonala\


secundara: ";
cout<<100.0*poz/N<<'%';

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();
//g) Sa se calculeze si sa se afiseze matricea C, unde: C = 3 * BT + B^2;
//aux = B*B

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
aux[i][j]=0;
for (int k=0; k<N; k++)
aux[i][j] += B[i][k]*B[k][j];
}

//C = 3*BT + aux


for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
C[i][j] = 3*BT[i][j] + aux[i][j];

cout<<"\n\nMatricea C = 3*BT + B^2:\n";


for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<C[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//h) Sa se calculeze si sa se afiseze matricea D, unde:


//D = B + B^2+ B^3 + B^4
//D = B + aux = B + B^2

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
D[i][j] = B[i][j] + aux[i][j]; //aux=B^2 (vezi mai sus)

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
C[i][j]=0;
for (int k=0; k<N; k++)
C[i][j] += aux[i][k]*B[k][j]; //C=B^3 (B*B^2)
}

//D = D + C = B + B^2 + B^3


for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
D[i][j]=D[i][j]+ C[i][j];

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
aux[i][j]=0;
for (int k=0; k<N; k++)
aux[i][j] += C[i][k]*B[k][j]; //aux=B^4 (B*B^3)
}
//D = D + aux = B + B^2 + B^3 + B^4
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
D[i][j]=D[i][j]+ aux[i][j];

cout<<"\n\nMatricea D = B + B^2+ B^3 + B^4:\n";


for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<D[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//i) Sa se interschimbe coloanele matricii A astfel: prima cu ultima,


//a doua cu penultima, etc.

cout<<"\n\nMatricea A:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}

for (int i=0; i<N; i++)


for (int j=0; j<N/2; j++)
{
double vaux = A[i][j];
A[i][j] = A[i][N-j-1];
A[i][N-j-1] = vaux;
}

cout<<"\nMatricea A cu coloanele interschimbate:\n";


for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<A[i][j]<<'\t';
cout<<'\n';
}
}
//7. Se citesc de la tastatura elementele unei matrici de numere intregi
//C (N X N), N<=10.

#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
int C[10][10], CT[10][10], B[10][10], E[10][10], aux[10][10];
long double p=1, s=1;
int N;

cout<<"Introduceti dimensiunea matricii: ";


cin>>N;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
cout<<"C["<<i+1<<"]["<<j+1<<"]=";
cin>>C[i][j];
}

//a) Sa se afiseze matricea C;

cout<<"\nMatricea C:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<C[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//b) Sa se calculeze si sa se afiseze procentul elementelor impare


//de pe liniile pare;

int imp=0;
for (int i=1; i<N; i+=2)
for (int j=0; j<N; j++)
if (C[i][j]%2 != 0)
imp++;

cout<<"\n\nProcentul elementelor impare de pe liniile pare: ";


cout<<100.0*imp/(N*N/2)<<'%';

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//c) Sa se calculeze si sã se afiseze matricea B, unde: B=C^2;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
{
B[i][j]=0;
for (int k=0; k<N; k++)
B[i][j] += C[i][k]*C[k][j];
}

cout<<"\n\nMatricea B = C^2:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<B[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//d) Sa se calculeze si sa se afiseze matricea E,


//unde: E = (C + CT)^2+ I, unde I este matricea unitate;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
CT[i][j]=C[j][i];

//aux = C + CT
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
aux[i][j]=C[i][j]+ CT[i][j];

//E = aux^2 = (C + CT)^2


for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
{
E[i][j]=0;
for (int k=0; k<N; k++)
E[i][j] += aux[i][k]*aux[k][j];
}

//Se aduna la E matricea unitate


for (int i=0; i<N; i++)
E[i][i]++;

cout<<"\n\nMatricea E = (C + CT)^2+I:\n";
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<E[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//e) Sa se afle elementul minim din matricea C;

int min=C[0][0];
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
if (C[i][j]<min)
min=C[i][j];
cout<<"\n\nElementul minim din matricea C: "<<min;

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//f) Sa se înlocuiasca elementul maxim din matricea C


//cu valoarea val, introdusa de la tastatura;

int max=C[0][0], val, c=0, r=0;


cout<<"\n\nIntroduceti valoarea care va inlocui elementul maxim\
din C: ";
cin>>val;

for (int i=0; i<N; i++)


for (int j=0; j<N; j++)
if (C[i][j]>max)
{
max=C[i][j];
r=i;
c=j;
//in r si c se memoreaza indicii elementului maxim
}

cout<<"\n\nMatricea C inainte de inlocuirea valorii maxime\n";


for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<C[i][j]<<'\t';
cout<<'\n';
}

C[r][c]=val;

cout<<"\n\nMatricea C dupa inlocuirea elementului maxim (";


cout<<max<<") cu valoarea "<<val<<'\n';
for (int i=0; i<N; i++)
{
for (int j=0; j<N; j++)
cout<<C[i][j]<<'\t';
cout<<'\n';
}

cout<<"\n...Apasa o tasta pentru a continua...\n";


getch();

//g) Sa se afiseze elementele matricii C care sunt numere prime;

int prim;
cout<<"\n\nElementele numere prime ale matricii C:\n";
for (int i=0; i<N; i++)
for (int j=0; j<N; j++)
{
prim=1;
for (int k=2; k<=C[i][j]/2; k++)
if (C[i][j]%k==0)
prim = 0;
if (prim)
cout<<C[i][j]<<" ";
}

cout<<"\n\n...Apasa o tasta pentru a continua...\n";


getch();

//h) Sa se calculeze si sã se afiseze sumele si produsele


//elementelor matricii C, aflate în triunghiurile hasurate:
// ------- ------ ------ ------
// |\ /| |\ x| |xxxx| |x |
// | \ / | | \xx| |xxx | |xx |
// | x x | | /xx| |xx | |xxx |
// |xx xx| |/ x| |x | |xxxx|
// ------- ------ ------ ------

s=0; p=1;
for (int i=N/2; i<N; i++)
for (int j=N-i-1; j<=i; j++)
{
s += C[i][j];
p *= C[i][j];
}
cout<<"\n\nSuma elementelor din primul triunghi: "<<s;
cout<<"\nProdusul elementelor din primul triunghi: "<<p;

s=0; p=1;
for (int j=N/2; j<N; j++)
for (int i=N-j-1; i<=j; i++)
{
s += C[i][j];
p *= C[i][j];
}
cout<<"\n\nSuma elementelor din al doilea triunghi: "<<s;
cout<<"\nProdusul elementelor din al doilea triunghi: "<<p;

s=0; p=1;
for (int i=0; i<N; i++)
for (int j=0; j<N-i; j++)
{
s += C[i][j];
p *= C[i][j];
}
cout<<"\n\nSuma elementelor din al treilea triunghi: "<<s;
cout<<"\nProdusul elementelor din al treilea triunghi: "<<p;

s=0; p=1;
for (int j=0; j<N; j++)
for (int i=j; i<N; i++)
{
s += C[i][j];
p *= C[i][j];
}
cout<<"\n\nSuma elementelor din al patrulea triunghi: "<<s;
cout<<"\nProdusul elementelor din al patrulea triunghi: "<<p;
}

Evaluare