Programa Gauss Jordan.

Dependencies:   mbed

main.cpp

Committer:
JavierMarcelo98
Date:
2019-10-25
Revision:
15:9199611a074f
Parent:
14:596a61f27f36

File content as of revision 15:9199611a074f:

/* ###########################################################################
**    Archivo        : main.c
**    Proyecto       : STM32-F103C8_Plantilla
**    Procesador     : STM32F103C8
**    Herramienta    : Mbed
**    Version        : Driver 01.01
**    Compilador     : GNU C Compiler
**    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
**    Descripción    :
**         Este proyecto muestra la configuracion del uso de la terminal serial
**         This module contains user's application code.
**   Componentes     : Serial, etc .
**   Configuraciones : Se puede selecionar entre diferentes  velocidades de transmision
**   Autores         :
**         ATEAM Development Group:
**          - Antulio Morgado Valle
**          - Marcelo Padron Javier 
**
**   Versión        : Beta
**   Revisión       : A
**   Release        : 0
**   Bugs & Fixes   :
**   Date           : 20/10/2019
**                    Added support for Led_RGB
**                    22/09/2018 
**                    Added LCD Menu, Beta version (with bugs)
**
** ###########################################################################*/
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:  Includes
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/
#include "mbed.h"
#include "stm32f103c8t6.h"
#include "PinNames.h"
#include "Serial.h"
#include "stdio.h"
#include "math.h"

/*
:...............................................................................
:  Definiciones
:...............................................................................
*/
#define  on             0               // Estado para boton presionado
#define off             1               // Estado para boton sin presionar
#define hold            2               // Estado para boton mantenido
#define release         3               // Estado para boton liberado
#define FALSE           0               // Estado FASLO
#define TRUE            1               // Estado VERDADERO
#define t 100 
/*
+-------------------------------------------------------------------------------
|  Configuración de Puertos 
+-------------------------------------------------------------------------------
*/
// Host Pc terminal Comunication channel
Serial terminal (PA_2,PA_3);  //Inicioaliza la comunicacion serial a la PC(RX,TX)   
//Serial terminal(USBTX,USBRX,1115200);/TX,RX
/*
+-------------------------------------------------------------------------------
|  Variables Globales de Usuario 
+-------------------------------------------------------------------------------
*/
uint32_t Baud_Rate   =  115200 ;           // Velocidad de transmision
/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|  Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
void Setup(void); //Function que inicializa la tarjeta;
void Portada();
void pidedatos(); 
void mat_imp(); 
void correjir(); 
void gaussjordan(); 
void imprime();
/*
END definitions */  
/*
#===============================================================================
|
|               P R O G R A M A     P R I N C I P A L
|
#=============================================================================== 
*/
int main()          
{
Setup();            // Inicialización del sistema
Portada();          //Mandar a llamar a la funcion Portada.
int op; 
do 
{ 
  pidedatos(); 
  mat_imp(); 
  correjir(); 
  gaussjordan(); 
  imprime(); 
  printf("Quieres otro calculo?n1.Sin0.NonR= "); 
  op =terminal.getc(); 
} 
  while(op>=1); 
  terminal.printf("nn"); 
}
/* END main */

/*
................................................................................
:  Rutinas de los Vectores de Interrupción
................................................................................
*/
  
/*
______________________________________________________________________________
|
|  Funciones Prototipo
|_______________________________________________________________________________
*/
                // Las Funciones Prototipo van aquí !
void Setup() 
{
  terminal.baud(115200);
}
void Portada()//Funcion Portada
{
    terminal.printf("\n\r\t\e[1;32m0101  0101  010101  01   10  0101    0101  0101  0101  0101  0101 0101  01   10  0101  0101\e[0m");
    terminal.printf("\n\r\t\e[1;32m01    01      01    010 010  01        0   0  1  01    0  1   10  01    010  10  01    0  1\e[0m");
    terminal.printf("\n\r\t\e[1;32m0101  0101    01    01 1 10  0101     1    0101  01    0101   10  0101  01 1 10  01    0  1\e[0m");
    terminal.printf("\n\r\t\e[1;32m01      01    01    01   10  01      0     0  1  01    0  1   10  01    01  010  01    0  1\e[0m"); 
    terminal.printf("\n\r\t\e[1;32m0101  0101  010101  01   10  0101    0101  0  1  0101  0  1   10  0101  01   10  0101  0101\e[0m");
    terminal.printf("\n\n\r\t\e[1;32m       \'NUESTROS COLORES VERDE \e[0m\e[1;37mY BLANCO, POR QUE EL\e[0m\e[1;31m ROJO LO LLEVAMOS EN LA SANGRE!!!\'\e[0m\n\n");
    terminal.printf("\n\r\t\t\e[1;37m           ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA\e[0m"); 
    terminal.printf("\n\n\r\t\t\e[1;37m                INGENIERIA EN COMUNICACIONES Y ELECTRONICA\e[0m"); 
    terminal.printf("\n\n\r\t\t\e[1;37m                            ANALISIS NUMERICO\e[0m"); 
    terminal.printf("\n\n\r\t\t\e[1;37m                            PROGRAMA GAUSS JORDAN\e[0m");
    terminal.printf("\n\n\r\t\t\e[1;37m                      ALUMNO: MARCELO PADRON JAVIER\e[0m");
    terminal.printf("\n\n\r\t\t\e[1;37m                              GRUPO: 4CV2\e[0m\n\n");
    wait(3.0);//Retardo de 3 segundos   
}
int i,j,k,n=0,col,fila,op,op1,op2; 
float a[t][t+1]={0};
void pidedatos() 
 { terminal.printf("Programa para resolver sistemas de ecuaciones de hasta 100 incognitas"); 
   terminal.printf("nCuantas incognitas son?: "); 
   n = terminal.getc(); 
   terminal.printf("n"); 
   for(i=0;i<=n-1;i++) 
   { 
   for(j=0;j<=n;j++) 
     { 
   terminal.printf("A[%d][%d] = ",i,j); 
   a[i][j] = terminal.getc(); 
   } 
   printf("n"); 
   } 
   } 
void gaussjordan() 
{ 
   for(i=0;i<=n-1;i++) 
   { 
   for(j=n;j>=0;j--) 
   { 
   a[i][j]=a[i][j]/a[i][i]; 
   } 
   for(k=i+1;k<=n-1;k++) 
   { 
   for(j=n;j>=0;j--) 
   { 
   a[k][j]=a[k][j]-a[k][i]*a[i][j]; 
   } 
   } 
   for(k=0;k<=i-1;k++) 
   { 
   for(j=n;j>=0;j--) 
   { 
   a[k][j]=a[k][j]-a[k][i]*a[i][j]; 
   }
   } 
   } 
   } 
void mat_imp()
{ 
printf("nSu matriz es: nn"); 
for(i=0;i<=n-1;i++) 
{ 
for(j=0;j<=n;j++) 
{ 
terminal.printf(" %f ",a[i][j]); 
} 
terminal.printf("n"); 
} 
terminal.printf("nn");
} 
void correjir()
{ 
do{ 
terminal.printf("nHay algun error? Si.1tNo.0 "); 
op2 = terminal.getc(); 
if(op2==1) 
{ 
do{ 
terminal.printf("nSeleccione la posicion ----> "); 
terminal.printf(" [i] = "); 
fila = terminal.getc(); 
float i=fila;
terminal.printf("tttt[j] = "); 
col = terminal.getc(); 
float j=col;
terminal.printf("Que valor es? "); 
a[i][j]=teminal.getc(); 
terminal.printf("Tiene otro error? Si.1tNo.0 "); 
op = terminal.getc(); 
}
while(op>=1); 
mat_imp(); 
op1=0; 
} 
else terminal.printf("nOK!"); 
op1=0; 
}
while(op1>=1); 
terminal.printf("nn"); 
} 
void imprime() 
{ 
terminal.printf("Sus resultados son:"); 
for(i=0;i<=n-1;i++) 
{ 
terminal.printf("nX[%d] = %f",i,a[i][n]); 
} 
terminal.printf("nn"); 
} 


/* END routines */    
                
/* END program */

/*+-----------------------------------------------------------------------------       
*+  Conexión al Led Testigo:
*+ 
*+  Los leds se pueden conectar a cualquier pin que se declare como DigitalOut. 
*+  El dispositivo puede drenar hasta 20ma por todas sus salidas a un voltaje de 
*+  3.3V, pero se recomienda no exceder de 1mA por salida.
*+  Esto se logra poniendo una resistencia limitadora de mínimo 330 Ohms.
*+  
*+    3.3V o 5V
*+       O
*+       |
*+       |
*+       /
*+       \   1K
*+       /
*+       \                         UTILIZANDO LÓGICA NEGATIVA
*+       |
*+    __|__
*+    \      /
*+     \    /
*+      \  /
*+     _\/_
*+       |
*+       |__________________________  PIN (Digital Out)
*+
*+      
*+      
*+       
*+                    1K
*+                   
*+        ________/\  /\  /\  ____    PIN (Digital Out)
*+       |           \/  \/  \/
*+       |      
*+       |
*+     __|__
*+    \      /
*+     \    /
*+      \  /                       UTILIZANDO LÓGICA POSITIVA
*+      _\/_
*+       |
*+       |
*+       |
*+     __|__
*+      ___
*+       _
*+       _
*+
*+      GND
*+
+----------------------------------------------------------------------------
*+
*+   Powered by
*+
*+          T H E     A N T U L I U ' S   T E A M   R&D  Unltd 
*+
*+  Research, Development, Systems, Equipment, Support & Spare Parts.
*+  (C) Copyright 1989-2019, All Rights Reserved            
*+
*+  Welcome to The Beaners Proyect Community!                   
*+----------------------------------------------------------------------------*/

/* END Mbed */