Manejo de Matrices en C
TP1 para UP.
Les dejo ejemplificado con estos ejercicios el manejo de matrices en C..
Cargar una matriz de 5 filas y 5 columnas y calcular y mostrar:
1. la matriz transpuesta
2. El promedio de los elementos de las dos diagonales (principal y secundaria)
3. Multiplicar la matriz por su transpuesta.
4. Determinar cuantos números primos hay en la matriz.
Funciones en el código:
- Cargar matriz cuadrada
- Mostrar matriz cuadrada
- Calcular matriz transpuesta
- Multiplicar matrices
- Sacar el promedio de las diagonales
- Contar la cantidad de primos en la matriz
Aca el codigo completo:
/* * TRABAJO PRACTICO N.1 * (matrices) * Compilado con wxDev - C++ en Windows Seven */ #include <stdio.h> #include <conio.h> // Defino el Tamaño de la Matriz Cuadrada. #define _TAM 3 //Declaracion de Funciones void mat2_cargar(int M[_TAM][_TAM], int tm); void mat2_mostrar(int M[_TAM][_TAM], int tm); void mat2_traspuesta(int M[_TAM][_TAM], int tm, int T[_TAM][_TAM]); void mat2_multiplicar(int A[_TAM][_TAM], int B[_TAM][_TAM], int tm, int C[_TAM][_TAM]); float mat2_promDiagonales(int M[_TAM][_TAM], int tm); int mat2_cantPrimos(int M[_TAM][_TAM], int tm); /*******************************/ /***** TRABAJO PRACTICO 1 ******/ /*******************************/ int main(){ //clrscr(); //Declaraciones int MAT[_TAM][_TAM]; int TRAS[_TAM][_TAM]; int MULTI[_TAM][_TAM]; float prom=0.0; int primos=0; //Cargar Matriz MAT mat2_cargar(MAT, _TAM); //Mostrar Matriz MAT printf("\n\n** Matriz Cargada **\n"); mat2_mostrar(MAT, _TAM); //Promedio de las Diagonales prom = mat2_promDiagonales(MAT, _TAM); printf("\n\n** Promedio de Elementos de las Diagonales de la Matriz **\n"); printf("%.2f\n",prom); //Crear Traspuesta de Matriz MAT mat2_traspuesta(MAT, _TAM, TRAS);//da como resultado la matriz TRA //Mostrar TRA printf("\n** Matriz Traspuesta **\n"); mat2_mostrar(TRAS, _TAM); //Multiplicar MAT*TRA, resultado mat2_multiplicar(MAT,TRAS,_TAM,MULTI); //Mostrar MULTI printf("\n** Matriz Resultado de la multiplicacion **\n"); mat2_mostrar(MULTI, _TAM); //Cantidad de Numeros primos entre los elementos de la Matriz primos = mat2_cantPrimos(MAT, _TAM); //Mostrar Numeros Primos printf("\n\n** Cantidad de Numeros Primos **\n"); printf("%d",primos); getch(); return 0; } /**********************/ /***** FUNCIONES ******/ /**********************/ //Cargar Matriz Cuadrada void mat2_cargar(int M[_TAM][_TAM], int tm){ int i,j; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ printf("%d,%d: ",i,j); scanf("%d",&M[i][j]); } } } //Mostrar Matriz Cuadrada void mat2_mostrar(int M[_TAM][_TAM], int tm){ int i,j; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ printf("%d\t",M[i][j]); } printf("\n"); } } //Sacar Traspuesta de una Matriz Cuadrada void mat2_traspuesta(int M[_TAM][_TAM], int tm, int T[_TAM][_TAM]){ int i,j; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ T[j][i] = M[i][j]; } } } //Multiplicacion de matrices cuadradas. void mat2_multiplicar(int A[_TAM][_TAM], int B[_TAM][_TAM], int tm, int C[_TAM][_TAM]){ int i,j,k; int parc=0; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ for(k=0;k<tm;k++){ parc = parc + (A[i][k] * B[k][j]); } C[i][j] = parc; parc=0; } } } //Promedio de Diagonales float mat2_promDiagonales(int M[_TAM][_TAM], int tm){ int i,j; float cant=0.0; float prom=0.0; int sum = 0; int card = tm-1; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ if((i==j) || (j==(card-i)) ){//Diagonal principal || secundaria sum = sum + M[i][j]; cant++; } } } if(cant!=0) prom = sum/cant; return prom; } int mat2_cantPrimos(int M[_TAM][_TAM], int tm){ int i,j,k; int c=0; int aux=0; for(i=0;i<tm;i++){ for(j=0;j<tm;j++){ if((M[i][j]==1) || (M[i][j]==2)) c++; if(M[i][j]>2){ for(k=2;k<M[i][j];k++){ if((M[i][j]%k)==0) aux++; } if(aux==0) c++; else aux=0; } } } return c; }
Categorised as: Code
