miercuri, 25 aprilie 2012

Operaţii din algebra matriceală


Ex. 8  Să se determine matricea transpusă a unei matrice citită de la tastatură (matr_A)

Prezentarea algoritmului :

-         se citesc dimensiunile matricelor
şi n
-         se citesc elementele matricei iniţiale
pentru i=0,m-1 execută
            pentru j=0,n-1 execută
                                          citeşte matr_A[i][j];
                              sfârşit pentru
                        sfârşit pentru
-         ecou     
 
-         se parcurge matricea iniţială element cu element, elementul cu indicele [i][j] devenind elementul cu indicele [j][i] în matricea finală
pentru i=0,m-1 execută
            pentru j=0,n-1 execută
                        matr_B[i][j] = matr_A[j][i]
            sfârşit pentru
sfârşit pentru

-         se afişează elementele matricei finale (matricea transpusă)
pentru i=0,n-1 execută
            pentru j=0,m-1 execută
                                          afişează matr_B[i][j];
                              sfârşit pentru
                        sfârşit pentru

Ex.  Să se determine matricea produs rezultată în urma înmulţirii a doua matrice:
matr_C(m,n) = matr_A(m,n) x matr_B(m,n)

            Obs. Programul nu verifică corectitudinea dimensiunilor matricelor pentru a efectua operaţia de înmulţire.



#include <stdio.h>
#include <conio.h>
void main()
{
int matr_A[10][10], matr_B[10][10];
int matr_C[10][10];
int i,j,k,m,n,p;
clrscr();
printf("\n Introduceti dimensiunile matricelor ");
scanf("%d %d %d",&m,&n,&p);
printf("\n Introduceti elementele primei matrici \n");
for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                {
                                printf("matr_A[%d][%d]=",i,j);
                                scanf("%d",&matr_A[i][j]);
                 }

printf("\n Matricea citita de la tastatura este: \n");
for(i=0;i<m;i++)
{
printf("\t");
                for(j=0;j<n;j++)
                                printf(" %4d",matr_A[i][j]);
printf("\n");
}

printf("\n Introduceti elementele pentru matr B \n");
for(i=0;i<n;i++)
                for(j=0;j<p;j++)
                {
                                printf("matr_B[%d][%d]=",i,j);
                                scanf("%d",&matr_B[i][j]);
                 }

printf("\n Matricea citita de la tastatura este: \n");
for(i=0;i<n;i++)
{
printf("\t");
                for(j=0;j<p;j++)
                                printf(" %4d",matr_B[i][j]);
printf("\n");
}

for(i=0;i<m;i++)
                for(j=0;j<p;j++)
                                   matr_C[j][i] = 0;

for(i=0;i<m;i++)
                for(j=0;j<p;j++)
                                for(k=0;k<n;k++)
         matr_C[i][j] = matr_C[i][j]+matr_A[i][k]*matr_B[k][j];

printf("\n Matricea produs \n");
for(i=0;i<m;i++)
{
printf("\t");
                for(j=0;j<p;j++)
                                printf(" %4d",matr_C[i][j]);
printf("\n");
}
getch();

Niciun comentariu:

Trimiteți un comentariu