Mostrando entradas con la etiqueta tutorial lenguaje C. Mostrar todas las entradas
Mostrando entradas con la etiqueta tutorial lenguaje C. Mostrar todas las entradas

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);
 
}