martes, 23 de junio de 2015

Matrices en lenguaje C/C++ con funciones

Vamos a realizar un programa con funciones el cual permita ingresar datos en una matriz y calcule la matriz simétrica y antisimétrica:

#include<stdio.h>
#include<conio.h>

int leer_entero(char mensaje[50],int min, int max){
 int dato;
 do{
  printf("%s\n",mensaje);
  scanf("%d",&dato);
 }while(dato<min||dato>max);
 return dato;
}

float leer_float(char mensaje[50],float min, float max){
 float dato;
 do{
  printf("%s\n",mensaje);
  scanf("%f",&dato);
 }while(dato<min||dato>max);
 return dato;
} 


void leer_matriz(float m[50][50],int fila,int col){
 for(int f=0;f<fila;f++){
  for(int c=0;c<col;c++){
           m[f][c]=leer_float("Ingrese un valor: ",-32768.0,32767.0);   
  }
 }
 
}

void imprimir_matriz(float m[50][50],int fila,int col){
 
 for(int f=0;f<fila;f++){
  for(int c=0;c<col;c++){
   printf("%8.2f",m[f][c]);
  }
  printf("\n");
 }
}

void obtener_simetrica(float m[50][50],int fila, int col,float s[50][50]){
         for(int f=0;f<fila;f++)
         {
          for(int c=0;c<col;c++){
           s[f][c]=(m[f][c]+m[c][f])/2.0;
          }
         }
}

void obtener_antisimetrica(float m[50][50],int fila, int col,float a[50][50]){
         for(int f=0;f<fila;f++)
         {
          for(int c=0;c<col;c++){
           a[f][c]=(m[f][c]-m[c][f])/2.0;
          }
         }
}

int main(){
 float matriz[50][50];
 float simetrica[50][50];
 float antisimetrica[50][50];
 int fila,columna;
 
 fila=leer_entero("Ingrese el numero de filas: ",1,50);
 columna=fila; //las filas y columnas deben ser iguales en matiz cuadrada
 
 printf("lectura de matriz\n");
 leer_matriz(matriz,fila,columna);
 printf("Impresion matriz original\n");
 imprimir_matriz(matriz,fila,columna);
 obtener_simetrica(matriz,fila,columna,simetrica);
 printf("Impresion matriz simetrica\n");
 imprimir_matriz(simetrica,fila,columna);
 obtener_antisimetrica(matriz,fila,columna,antisimetrica);
 printf("Impresion matriz antisimetrica\n");
 imprimir_matriz(antisimetrica,fila,columna);
 
}

1 comentario: