Documente Academic
Documente Profesional
Documente Cultură
L08.Programare C
L08.Programare C
Tablouri bidimensionale(matrici)
Problema 1. Să se elaboreze un program care citeşte de la tastatură două
matrici cu componente întregi şi realizează produsul lor. Să se verifice, de
asemenea, dacă este satisfăcută condiţia ca să se poată realiza produsul
acelor matrici.
#include<iostream>
using namespace std;
void main(void){
int a[10][10],b[10][10],c[10][10],i,j,k,m,n1,n2,p;
cout<<"Introduceti dimensiunile celor doua matrici si elementele
lor"<<endl;
cout<<"Matricea A : "<<endl;
cout<<"numarul de linii : ";cin>>m;
cout<<"numarul de coloane : ";cin>>n1;
for(i=0;i<m;i++)
for(j=0;j<n1;j++){
cout<<"a["<<i+1<<","<<j+1<<"]=";
cin>>a[i][j];
}
cout<<"Matricea B : "<<endl;
do{
cout<<"numarul de linii : ";
cin>>n2;
} while(n2!=n1);
cout<<"numarul de coloane : ";cin>>p;
for(i=0;i<n2;i++)
for(j=0;j<p;j++){
cout<<"b["<<i+1<<","<<j+1<<"]=";
cin>>b[i][j];
}
for(i=0;i<m;i++)
for(j=0;j<p;j++)
c[i][j]=0;
for(i=0;i<m;i++)
for(j=0;j<p;j++)
for(k=0;k<n1;k++)
c[i][j]+=a[i][k]*b[k][j];
cout<<"Matricea produs este :"<<endl;
for(i=0;i<m;i++){
for(j=0;j<p;j++)
cout<<c[i][j]<<" ";
cout<<endl;
}
cout<<endl;
}
#include <iostream>
using namespace std;
void main(void){
int n,m,i,j,a[30][30];
cout<<"Dati dimensiunile matricii "<<endl;
cout<<"Dati numarul de linii : ";cin>>n;
cout<<"Dati numarul de coloane : ";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cout<<"a["<<i+1<<","<<j+1<<"]= ";
cin>>a[i][j];}
cout<<"----------------------"<<endl;
cout<<"Elementele matricii A sunt: "<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"----------------------"<<endl;
cout<<"Elementele matricii transpuse sunt: "<<endl;
for(j=0;j<m;j++){
for(i=0;i<n;i++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
2
Problema 4. Se consideră o matrice A de tip n*n, cu componentele numere
întregi. Să se calculeze:
- suma elementelor de pe diagonala principală;
- produsul elmentelor de pe diagonala secundară;
- minimul elementelor aflate deasupra, respectiv sub diagonala principală;
- maximul elementelor aflate deasupra, respectiv sub diagonala secundară.
#include <iostream>
using namespace std;
void main(void){
int n,i,j,a[30][30],min1,min2,max1,max2,suma,produs;
cout<<"Dati dimensiunile matricii "<<endl;
cout<<"Dati numarul de linii si de coloane n = ";cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++){
cout<<"a["<<i+1<<","<<j+1<<"]= ";
cin>>a[i][j];
}
cout<<"----------------------"<<endl;
cout<<"Elementele matricii A sunt: "<<endl;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"----------------------"<<endl;
// suma elementelor de pe diagonala pricipala
suma=0;
for(i=0;i<n;i++)
suma+=a[i][i];
cout<<"Suma elementelor de pe diagonala principala este "<<suma<<endl;
// produsul elementelor de pe diagonala secundara
produs=1;
for(i=0;i<n;i++)
produs*=a[i][n-i-1];
cout<<"Produsul elementelor de pe diagonala secundara este
"<<produs<<endl;
// minimul elementelor de deasupra diagonalei principale
min1=32768;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if((i<j) && (a[i][j]<min1))
min1=a[i][j];
cout<<"Minimul de deasupra diag. principale este "<<min1<<endl;
// minimul elementelor de sub diagonala principala
min2=32768;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if((i>j) && (a[i][j]<min2))
min2=a[i][j];
cout<<"Minimul de sub diag. principala este "<<min2<<endl;
// maximul elementelor de deasupra diagonalei principale
max1=-32768;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
3
if((i<j) && (a[i][j]>max1))
max1=a[i][j];
cout<<"Maximul de deasupra diag. principale este "<<max1<<endl;
// maximul elementelor de sub diagonala principala
max2=-32768;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if((i>j) && (max2<a[i][j]))
max2=a[i][j];
cout<<"Maximul de sub diag. principala este "<<max2<<endl;
}
#include <iostream>
using namespace std;
void main(void){
int a[30][30],n,m,i,j,max,nr;
cout<<"Dati numarul de linii n = ";cin>>n;
cout<<"Dati numarul de coloane m = ";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cout<<"a["<<i+1<<","<<j+1<<"]=";
cin>>a[i][j];
}
cout<<"----------------------"<<endl;
cout<<"Matricea A este"<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"----------------------"<<endl;
max=0;
for(i=0;i<n;i++){
nr=0;
for(j=0;j<m;j++)
if(a[i][j]!=0) nr++;
if(max<nr) max=nr;
}
for(i=0;i<n;i++){
nr=0;
for(j=0;j<m;j++)
if(a[i][j]!=0) nr++;
if(max==nr)
cout<<"Linia "<<i+1<<" are "<<max<<" elemente
nenule"<<endl;
}
}
4
#include <iostream>
using namespace std;
void main(void){
int a[30][30],n,m,i,j,suma=0;
cout<<"Dati numarul de linii n = ";cin>>n;
cout<<"Dati numarul de coloane m = ";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cout<<"a["<<i+1<<","<<j+1<<"]=";
cin>>a[i][j];
}
cout<<"----------------------"<<endl;
cout<<"Matricea A este"<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"----------------------"<<endl;
for(i=0;i<m;i++){
suma+=a[0][i];
suma+=a[n-1][i];
}
for(i=1;i<n-1;i++){
suma+=a[i][0];
suma+=a[i][n-1];
}
cout<<"Suma elementelor de pe marginea matricii este : "<<suma<<endl;
}
#include<iostream>
using namespace std;
void main(){
int a[30][30],min,max,n,m,i,j;
cout<<"Dati numarul de linii n = ";cin>>n;
cout<<"Dati numarul de coloane m = ";cin>>m;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cout<<"a["<<i+1<<","<<j+1<<"]=";
cin>>a[i][j];
}
cout<<"----------------------"<<endl;
cout<<"Matricea A este"<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
cout<<"----------------------"<<endl;
cout<<"Minimurile pe linie sunt : ";
for(i=0;i<n;i++){
min=a[i][0];
5
for(j=1;j<m;j++)
if(a[i][j]<min)
min=a[i][j];
cout<<min<<" ";
}
cout<<endl;
cout<<"Maximurile pe coloane sunt : ";
for(j=0;j<m;j++){
max=a[0][j];
for(i=1;i<n;i++)
if(a[i][j]>max)
max=a[i][j];
cout<<max<<" ";
}
cout<<endl;
}
#include<iostream>
using namespace std;
void main() {
int A[50][50],n,i,j,diag=1,p=1;
while(cout<<"n=",cin>>n,n<=0 || n>50);
for(i=0;i<n;i++)
for(j=0;j<n;j++) {
cout<<"A["<<i+1<<","<<j+1<<"]=";
cin>>A[i][j];
}
cout<<"Se da matricea: "<<endl;
for(i=0;i<n;i++) {
for(j=0;j<n;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
for(i=0;i<n&&diag;i++)
for(j=0;j<i&&diag;j++)
if(A[i][j])
diag=0;
if(diag) {
for(i=0;i<n;i++)
6
p*=A[i][i];
cout<<"Matricea este triunghiulara. Determinantul este :
"<<p<<endl;
}
else
cout<<"Matricea nu este triunghiulara."<<endl;
}
#include<iostream>
using namespace std;
int matrice[10][10],m,n,i,j;
void fibonacci(int x, int y) {
int i,j,a=0,b=0,c=1;
for(i=0;i<x;i++)
for(j=0;j<y;j++) {
matrice[i][j]=c;
a=b;
b=c;
c=a+b;
}
}
int main() {
cout<<"Introduceti dimensiunile matricii"<<endl;
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
fibonacci(n,m);
for(i=0;i<n;i++) {
for(j=0;j<m;j++)
cout<<matrice[i][j]<<" ";
cout<<endl;
}
}
#include<iostream>
using namespace std;
void main() {
int a,b,c,n,k,Cnk,i;
cout<<"Introduceti n : ";cin>>n;
cout<<"Introduceti k : ";cin>>k;
if(n<k)
cout<<"Calculul nu poate fi efectuat"<<endl;
else {
a=1;
for(i=2;i<=n;i++)
a*=i;
7
b=1;
for(i=2;i<=k;i++)
b*=i;
c=1;
i=2;
while(i<=(n-k)) {
c*=i;
i++;
}
Cnk=a/(b*c);
cout<<"Combinari de "<<n<<" luate cate "<<k<<" : "<<Cnk<<endl;
}
}