Sunteți pe pagina 1din 8

Prezentarea Problemei...................pag.3 Limbaj Natural.................................pag.3,4 Codul Sursa.....................................pag. 5,6 Printscreen........................................pag.7 Schema logica...................................pag.

Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii

Se creeaza un program ce ajuta la inmultirea a doua matrici cu ajutorul limbajului "C" in programul compilator "DevC". Ne propunem sa folosim matricea rezultata din inmultire pentru a afla media aritmetica a elementelor de deasupra diagonalei principale. Se vor afisa succesiv rezultatele daca problema este rezolvata corect.

Programul realizeaza urmatoarele: Introducerea elementelor unei matrici cu n linii si m coloane de la tastatura; Calcularea inmultirea celor 2 matrice. Folosind matricea rezultata, algoritmul calculeaza in continuare media aritmetica a elementelor aflate deasupra diagonalei principale a matricei. Declaram bibliotecile necesare: #include<stdlib.h> ; #include<stdio.h>; #include<conio.h> , urmate declaram variabilele globale u[100][100],v[100][100],x[100][100],n,m,p,i,j,k,r,c;. In structura "main" incepem prin a introduce dimensiunile matricilor apoi cu ajutorul a doua structuri "for" introducem prima matrice cu functia "scanf" pentru citire si functia "printf" pentru afisarea matricei folosind alte 2 structuri "for".Procedam in acelasi mod si pentru introducerea si afisarea Exemplu: printf("Dimensiunile primei matrici:"); scanf("%d %d",&n,&m); printf("Dimensiunile 2a matrici: %d,",m); scanf("%d",&p); for (i=0;i<n;i++) { printf("Introduceti valorile de pe linia %d:",i+1); for(j=0;j<m;j++) {
Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii 3

scanf("%d",&u[i][j]); } } printf("\nPrima Matrice este:"); for(i=0;i<n;i++)


Afisand cele 2 matrici,algoritmul calculeaza automat produsul celor doua iar prin apelarea acestuia se afiseaza matricea rezultat, cu ajutorul functiei "for" si prin operatia specifica de inmultire. Exemplu: void inmultire(int u[100][100],int v[100][100]) { for(i=0;i<n;i++) { for(j=0;j<p;j++) { for(k=0;k<m;k++) { x[i][j]=x[i][j]+u[i][k]*v[k][j]; } } }}

Folosind 2 structuri repetitive "for" calculam media aritmetica a elementelor aflate deasupra diagonalei principale si apoi apelam functia "printf" pentru a o afisa. Terminam programul cu functia "getch" care il determina pe utilizator sa apese o tasta oarecare pentru a iesii din program.

Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii

#include <stdio.h> #include <math.h> #include <conio.h> int u[100][100],v[100][100],x[100][100],n,m,p,i,j,k,r,c; void inmultire(int u[100][100],int v[100][100]); int main() { printf("Dimensiunile primei matrici:"); scanf("%d %d",&n,&m); printf("Dimensiunile 2a matrici: %d,",m); scanf("%d",&p); for (i=0;i<n;i++) { printf("Introduceti valorile de pe linia %d:",i+1); for(j=0;j<m;j++) { scanf("%d",&u[i][j]); } } printf("\nPrima Matrice este:"); for(i=0;i<n;i++) { printf("\n"); for(j=0;j<m;j++) { printf("%d ",u[i][j]); } } for (i=0;i<m;i++) { printf("\n Introduceti valorile de pe linia %d:",i+1); for (j=0;j<p;j++) { scanf("%d",&v[i][j]); } }
Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii 5

printf(" \n Cea de-a doua Matrice este:"); for(i=0;i<m;i++) { printf("\n"); for(j=0;j<p;j++) { printf("%d ",v[i][j]); } } inmultire(u,v); printf("\nMatricea rezultata in urma inmultirii celor doua matrici este:" ); for(i=0;i<n;i++) { printf("\n"); for(j=0;j<p;j++) { printf("%d ",x[i][j]); } } printf("\n Suma elementelor aflate deasupra diagonalei principale este : "); r=0;c=0; for(i=0;i<n;i++) { for(j=0;j<p;j++) {if(i<j){r=r+x[i][j];c++;}}} r=r/c; printf("%d",r); getch(); } void inmultire(int u[100][100],int v[100][100]) { for(i=0;i<n;i++) { for(j=0;j<p;j++) { for(k=0;k<m;k++) { x[i][j]=x[i][j]+u[i][k]*v[k][j]; } }}}
Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii 6

Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii

START

Citeste n,m,p,x,i,j,k,r,c

i0

i<n Inmultire(Prima matrice,A doua matrice)

j0

j<m

i1

Citeste Citeste matricea[i][j] matricea[i][j]

ii+1 ii+1

i<n

jj+1

Afiseaza inmultirea

ii+1

rez[xi][j]= x[i][j]+u[i][k]* v[k][j]

Dragomir Ovidiu, Grupa 411E, Factultatea de Electronica, Telecomunicatii