Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:f16f5fb2d1b9, 2020-03-04 (annotated)
- Committer:
- franciscos
- Date:
- Wed Mar 04 00:51:01 2020 +0000
- Revision:
- 0:f16f5fb2d1b9
esime;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| franciscos | 0:f16f5fb2d1b9 | 1 | /* ############################################################################# |
| franciscos | 0:f16f5fb2d1b9 | 2 | ** Archivo : main.c |
| franciscos | 0:f16f5fb2d1b9 | 3 | ** Proyecto : STM32F103C8_Matrizgauss |
| franciscos | 0:f16f5fb2d1b9 | 4 | ** Procesador : STM32F103C8T6 |
| franciscos | 0:f16f5fb2d1b9 | 5 | ** Plataforma : Blue Pill |
| franciscos | 0:f16f5fb2d1b9 | 6 | ** Herramienta : Mbed Compiler |
| franciscos | 0:f16f5fb2d1b9 | 7 | ** Version : Driver 01.01 |
| franciscos | 0:f16f5fb2d1b9 | 8 | ** Compilador : GNU C Compiler |
| franciscos | 0:f16f5fb2d1b9 | 9 | ** Fecha/Hora : 17-02-2020, 22:53, # CodeGen: 0 |
| franciscos | 0:f16f5fb2d1b9 | 10 | ** Descripción : |
| franciscos | 0:f16f5fb2d1b9 | 11 | ** Este programa resuelve un sistema de ecuaciones de 3x3 por el metodo de Gauss |
| franciscos | 0:f16f5fb2d1b9 | 12 | ** This module contains user's application code. |
| franciscos | 0:f16f5fb2d1b9 | 13 | ** Componentes : GPIO, Timer, etc . |
| franciscos | 0:f16f5fb2d1b9 | 14 | ** Configuraciones : Includes, Stacks y Drivers externos |
| franciscos | 0:f16f5fb2d1b9 | 15 | ** Autores : |
| franciscos | 0:f16f5fb2d1b9 | 16 | ** ATEAM Development Group: |
| franciscos | 0:f16f5fb2d1b9 | 17 | ** - Francisco Sarabia López, Antulio Morgado Valle(plantilla) |
| franciscos | 0:f16f5fb2d1b9 | 18 | ** |
| franciscos | 0:f16f5fb2d1b9 | 19 | ** Versión : Alpha |
| franciscos | 0:f16f5fb2d1b9 | 20 | ** Revisión : A |
| franciscos | 0:f16f5fb2d1b9 | 21 | ** Release : 0 |
| franciscos | 0:f16f5fb2d1b9 | 22 | ** Bugs & Fixes : |
| franciscos | 0:f16f5fb2d1b9 | 23 | ** Date : |
| franciscos | 0:f16f5fb2d1b9 | 24 | ** |
| franciscos | 0:f16f5fb2d1b9 | 25 | ** ###########################################################################*/ |
| franciscos | 0:f16f5fb2d1b9 | 26 | /* |
| franciscos | 0:f16f5fb2d1b9 | 27 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
| franciscos | 0:f16f5fb2d1b9 | 28 | : Includes |
| franciscos | 0:f16f5fb2d1b9 | 29 | :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: |
| franciscos | 0:f16f5fb2d1b9 | 30 | */ |
| franciscos | 0:f16f5fb2d1b9 | 31 | #include "stm32f103c8t6.h" |
| franciscos | 0:f16f5fb2d1b9 | 32 | #include "mbed.h" |
| franciscos | 0:f16f5fb2d1b9 | 33 | #include "Serial.h" |
| franciscos | 0:f16f5fb2d1b9 | 34 | //#include "LedRGB.h" |
| franciscos | 0:f16f5fb2d1b9 | 35 | #include "stdio.h" |
| franciscos | 0:f16f5fb2d1b9 | 36 | |
| franciscos | 0:f16f5fb2d1b9 | 37 | /* |
| franciscos | 0:f16f5fb2d1b9 | 38 | :............................................................................... |
| franciscos | 0:f16f5fb2d1b9 | 39 | : Definiciones |
| franciscos | 0:f16f5fb2d1b9 | 40 | :............................................................................... |
| franciscos | 0:f16f5fb2d1b9 | 41 | */ |
| franciscos | 0:f16f5fb2d1b9 | 42 | #define on 0 // Estado para boton presionado |
| franciscos | 0:f16f5fb2d1b9 | 43 | #define off 1 // Estado para boton sin presionar |
| franciscos | 0:f16f5fb2d1b9 | 44 | #define hold 2 // Estado para boton mantenido |
| franciscos | 0:f16f5fb2d1b9 | 45 | #define release 3 // Estado para boton liberado |
| franciscos | 0:f16f5fb2d1b9 | 46 | #define FALSE 0 // Estado FALSO |
| franciscos | 0:f16f5fb2d1b9 | 47 | #define TRUE 1 // Estado VERDADERO |
| franciscos | 0:f16f5fb2d1b9 | 48 | #define Ticker_Rate 1000 // Periodo de interrupción Ticker (us) |
| franciscos | 0:f16f5fb2d1b9 | 49 | #define Baud_Rate 115200 // Velocidad de Transmisión de la Terminal |
| franciscos | 0:f16f5fb2d1b9 | 50 | /* |
| franciscos | 0:f16f5fb2d1b9 | 51 | +------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 52 | | Configuración de Puertos |
| franciscos | 0:f16f5fb2d1b9 | 53 | +------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 54 | */ |
| franciscos | 0:f16f5fb2d1b9 | 55 | Ticker TimerInt; // Inicializa la Interrupción por Timer |
| franciscos | 0:f16f5fb2d1b9 | 56 | DigitalOut led_monitor(LED1); // Inicializa el LED Monitor |
| franciscos | 0:f16f5fb2d1b9 | 57 | DigitalOut led_testigo(PB_1); // Inicializa el LED Testigo |
| franciscos | 0:f16f5fb2d1b9 | 58 | PwmOut led_pwm(PA_7); // Inicializa el LED PWM |
| franciscos | 0:f16f5fb2d1b9 | 59 | AnalogIn sensor1(PB_0); // Inicializa Canal Analógico para sensor 1 |
| franciscos | 0:f16f5fb2d1b9 | 60 | Serial terminal(PA_2, PA_3); // Inicializa la Comunicación Serial a la PC |
| franciscos | 0:f16f5fb2d1b9 | 61 | /* |
| franciscos | 0:f16f5fb2d1b9 | 62 | +------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 63 | | Variables Globales de Usuario |
| franciscos | 0:f16f5fb2d1b9 | 64 | +------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 65 | */ |
| franciscos | 0:f16f5fb2d1b9 | 66 | uint16_t Rate=Ticker_Rate/2; // Velocidad de barrido (500us = 0.5ms) |
| franciscos | 0:f16f5fb2d1b9 | 67 | uint16_t counter=250; // Cuenta inicial de 250us |
| franciscos | 0:f16f5fb2d1b9 | 68 | /* END variables */ |
| franciscos | 0:f16f5fb2d1b9 | 69 | |
| franciscos | 0:f16f5fb2d1b9 | 70 | /* |
| franciscos | 0:f16f5fb2d1b9 | 71 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| franciscos | 0:f16f5fb2d1b9 | 72 | | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción |
| franciscos | 0:f16f5fb2d1b9 | 73 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| franciscos | 0:f16f5fb2d1b9 | 74 | */ |
| franciscos | 0:f16f5fb2d1b9 | 75 | // Las Definiciones de Funciones Prototipo |
| franciscos | 0:f16f5fb2d1b9 | 76 | // y Apuntadores a Vectores de Interrupciones van aquí ! |
| franciscos | 0:f16f5fb2d1b9 | 77 | void TimerInt_OnInterrupt(void); |
| franciscos | 0:f16f5fb2d1b9 | 78 | void Blinking_Led(void); |
| franciscos | 0:f16f5fb2d1b9 | 79 | void ImprimirMatriz(float Matriz[3][4]); |
| franciscos | 0:f16f5fb2d1b9 | 80 | void IntercambiaFilas(float Matriz[][4], int F, int C); |
| franciscos | 0:f16f5fb2d1b9 | 81 | void EliminacionDiag(float Matriz[][4], int C); |
| franciscos | 0:f16f5fb2d1b9 | 82 | |
| franciscos | 0:f16f5fb2d1b9 | 83 | /* END prototypes */ |
| franciscos | 0:f16f5fb2d1b9 | 84 | |
| franciscos | 0:f16f5fb2d1b9 | 85 | /* END definitions */ |
| franciscos | 0:f16f5fb2d1b9 | 86 | /* |
| franciscos | 0:f16f5fb2d1b9 | 87 | #=============================================================================== |
| franciscos | 0:f16f5fb2d1b9 | 88 | | |
| franciscos | 0:f16f5fb2d1b9 | 89 | | P R O G R A M A P R I N C I P A L |
| franciscos | 0:f16f5fb2d1b9 | 90 | | |
| franciscos | 0:f16f5fb2d1b9 | 91 | #=============================================================================== |
| franciscos | 0:f16f5fb2d1b9 | 92 | */ |
| franciscos | 0:f16f5fb2d1b9 | 93 | int main() |
| franciscos | 0:f16f5fb2d1b9 | 94 | { // Inicialización de variables, puertos e interrupciones |
| franciscos | 0:f16f5fb2d1b9 | 95 | confSysClock(); // Inicialización del Sistema, Configure system clock (72MHz HSE clock, 48MHz USB clock) |
| franciscos | 0:f16f5fb2d1b9 | 96 | TimerInt.attach_us(&TimerInt_OnInterrupt, Ticker_Rate); // Le asigna el periodo de interrupción de 1ms (Ticker_Rate=1000) |
| franciscos | 0:f16f5fb2d1b9 | 97 | |
| franciscos | 0:f16f5fb2d1b9 | 98 | terminal.baud(Baud_Rate); // Se configura la velocidad de transmisión e inicia la comunicación serial. |
| franciscos | 0:f16f5fb2d1b9 | 99 | terminal.printf(" System is Wake Up!.\n\r"); |
| franciscos | 0:f16f5fb2d1b9 | 100 | |
| franciscos | 0:f16f5fb2d1b9 | 101 | while (true) // El Lazo del Programa principal está aquí !!! |
| franciscos | 0:f16f5fb2d1b9 | 102 | { |
| franciscos | 0:f16f5fb2d1b9 | 103 | Blinking_Led(); // Parapadeo del LED por Software |
| franciscos | 0:f16f5fb2d1b9 | 104 | led_pwm = sensor1.read(); // El Led se encenderá de acuerdo al valor del sensor |
| franciscos | 0:f16f5fb2d1b9 | 105 | terminal.printf("INSTITUTO POLITECNICO NACIONAL \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 106 | terminal.printf("\n EEEEEEE SSSS IIIIIII M M EEEEEEE \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 107 | terminal.printf( " E S I M M M M E \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 108 | terminal.printf( " EEEEEEE SSSS I M MM M EEEEEEE \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 109 | terminal.printf( " E S I M M E \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 110 | terminal.printf( " EEEEEEE SSSS IIIIIII M M EEEEEEE \r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 111 | terminal.printf( "\n Francisco Sarabia Lopez\r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 112 | terminal.printf( "\n Ingenieria en Comunicaciones y Electronica\r\n"); |
| franciscos | 0:f16f5fb2d1b9 | 113 | |
| franciscos | 0:f16f5fb2d1b9 | 114 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 115 | // Funciones aparte |
| franciscos | 0:f16f5fb2d1b9 | 116 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 117 | |
| franciscos | 0:f16f5fb2d1b9 | 118 | //Funcion imprimir |
| franciscos | 0:f16f5fb2d1b9 | 119 | |
| franciscos | 0:f16f5fb2d1b9 | 120 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 121 | // Main de matriz por metodo de gauss |
| franciscos | 0:f16f5fb2d1b9 | 122 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 123 | float matriz[3][4];//matriz con los datos igualados de las ecuaciones incluidas |
| franciscos | 0:f16f5fb2d1b9 | 124 | float X,Y,Z; |
| franciscos | 0:f16f5fb2d1b9 | 125 | float FAux1[4];//Filas auxiliares |
| franciscos | 0:f16f5fb2d1b9 | 126 | float FAux2[4]; |
| franciscos | 0:f16f5fb2d1b9 | 127 | int i,j,k,f,c; |
| franciscos | 0:f16f5fb2d1b9 | 128 | //Valores de prueba |
| franciscos | 0:f16f5fb2d1b9 | 129 | matriz[0][0]=0; |
| franciscos | 0:f16f5fb2d1b9 | 130 | matriz[0][1]=2; |
| franciscos | 0:f16f5fb2d1b9 | 131 | matriz[0][2]=0.5; |
| franciscos | 0:f16f5fb2d1b9 | 132 | matriz[0][3]=7; //Igualdad primera ecuacion |
| franciscos | 0:f16f5fb2d1b9 | 133 | matriz[1][0]=5; |
| franciscos | 0:f16f5fb2d1b9 | 134 | matriz[1][1]=0.33; |
| franciscos | 0:f16f5fb2d1b9 | 135 | matriz[1][2]=1; |
| franciscos | 0:f16f5fb2d1b9 | 136 | matriz[1][3]=0; //Igualdad segunda ecuacion |
| franciscos | 0:f16f5fb2d1b9 | 137 | matriz[2][0]=3; |
| franciscos | 0:f16f5fb2d1b9 | 138 | matriz[2][1]=4; |
| franciscos | 0:f16f5fb2d1b9 | 139 | matriz[2][2]=2; |
| franciscos | 0:f16f5fb2d1b9 | 140 | matriz[2][3]=1; //Igualdad tercera ecuacion |
| franciscos | 0:f16f5fb2d1b9 | 141 | |
| franciscos | 0:f16f5fb2d1b9 | 142 | ImprimirMatriz(matriz); |
| franciscos | 0:f16f5fb2d1b9 | 143 | |
| franciscos | 0:f16f5fb2d1b9 | 144 | for (i=0;i<3;i++) |
| franciscos | 0:f16f5fb2d1b9 | 145 | { |
| franciscos | 0:f16f5fb2d1b9 | 146 | //Compriobacion de diagonales diferentes a cero |
| franciscos | 0:f16f5fb2d1b9 | 147 | if(matriz[i][i]==0) |
| franciscos | 0:f16f5fb2d1b9 | 148 | { |
| franciscos | 0:f16f5fb2d1b9 | 149 | f=i; |
| franciscos | 0:f16f5fb2d1b9 | 150 | c=i; |
| franciscos | 0:f16f5fb2d1b9 | 151 | IntercambiaFilas(matriz,f,c); |
| franciscos | 0:f16f5fb2d1b9 | 152 | ImprimirMatriz(matriz); |
| franciscos | 0:f16f5fb2d1b9 | 153 | } |
| franciscos | 0:f16f5fb2d1b9 | 154 | //Eliminacion de numeros |
| franciscos | 0:f16f5fb2d1b9 | 155 | EliminacionDiag(matriz,i); |
| franciscos | 0:f16f5fb2d1b9 | 156 | ImprimirMatriz(matriz); |
| franciscos | 0:f16f5fb2d1b9 | 157 | } |
| franciscos | 0:f16f5fb2d1b9 | 158 | //Formulas para las incógnitas |
| franciscos | 0:f16f5fb2d1b9 | 159 | Z=matriz[2][3]/matriz[2][2]; |
| franciscos | 0:f16f5fb2d1b9 | 160 | Y=(matriz[1][3]-(Z*matriz[1][2]))/matriz[1][1]; |
| franciscos | 0:f16f5fb2d1b9 | 161 | X=(matriz[0][3]-(Z*matriz[0][2])-(Y*matriz[0][1]))/matriz[0][0]; |
| franciscos | 0:f16f5fb2d1b9 | 162 | |
| franciscos | 0:f16f5fb2d1b9 | 163 | terminal.printf("\n\n X= %.2f \t Y= %.2f \t Z= %.2f ", X, Y, Z); |
| franciscos | 0:f16f5fb2d1b9 | 164 | return 0; |
| franciscos | 0:f16f5fb2d1b9 | 165 | |
| franciscos | 0:f16f5fb2d1b9 | 166 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 167 | // Finaliza Main de Gauss |
| franciscos | 0:f16f5fb2d1b9 | 168 | //---------------------------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 169 | |
| franciscos | 0:f16f5fb2d1b9 | 170 | } |
| franciscos | 0:f16f5fb2d1b9 | 171 | } |
| franciscos | 0:f16f5fb2d1b9 | 172 | /* END main */ |
| franciscos | 0:f16f5fb2d1b9 | 173 | |
| franciscos | 0:f16f5fb2d1b9 | 174 | /* |
| franciscos | 0:f16f5fb2d1b9 | 175 | ................................................................................ |
| franciscos | 0:f16f5fb2d1b9 | 176 | : Rutinas de los Vectores de Interrupción |
| franciscos | 0:f16f5fb2d1b9 | 177 | ................................................................................ |
| franciscos | 0:f16f5fb2d1b9 | 178 | */ |
| franciscos | 0:f16f5fb2d1b9 | 179 | // Las Rutinas de Atención a Interrupciones van aquí ! |
| franciscos | 0:f16f5fb2d1b9 | 180 | void TimerInt_OnInterrupt() // Rutina de Atención al Ticker |
| franciscos | 0:f16f5fb2d1b9 | 181 | { |
| franciscos | 0:f16f5fb2d1b9 | 182 | |
| franciscos | 0:f16f5fb2d1b9 | 183 | } |
| franciscos | 0:f16f5fb2d1b9 | 184 | /* END Events */ |
| franciscos | 0:f16f5fb2d1b9 | 185 | /* |
| franciscos | 0:f16f5fb2d1b9 | 186 | ________________________________________________________________________________ |
| franciscos | 0:f16f5fb2d1b9 | 187 | | |
| franciscos | 0:f16f5fb2d1b9 | 188 | | Funciones Prototipo |
| franciscos | 0:f16f5fb2d1b9 | 189 | |_______________________________________________________________________________ |
| franciscos | 0:f16f5fb2d1b9 | 190 | */ |
| franciscos | 0:f16f5fb2d1b9 | 191 | // Las Funciones Prototipo van aquí ! |
| franciscos | 0:f16f5fb2d1b9 | 192 | void Blinking_Led() // Software Blinking routine for LED |
| franciscos | 0:f16f5fb2d1b9 | 193 | { |
| franciscos | 0:f16f5fb2d1b9 | 194 | // The on-board LED is connected, via a resistor, to +3.3V (not to GND). |
| franciscos | 0:f16f5fb2d1b9 | 195 | // So to turn the LED on or off we have to set it to 0 or 1 respectively |
| franciscos | 0:f16f5fb2d1b9 | 196 | led_testigo = 1; // turn the LED on (using Positive Logic) |
| franciscos | 0:f16f5fb2d1b9 | 197 | wait_ms(200); // 200 millisecond |
| franciscos | 0:f16f5fb2d1b9 | 198 | led_testigo = 0; // turn the LED off (using Positive Logic) |
| franciscos | 0:f16f5fb2d1b9 | 199 | wait_ms(1000); // 1000 millisecond |
| franciscos | 0:f16f5fb2d1b9 | 200 | } |
| franciscos | 0:f16f5fb2d1b9 | 201 | |
| franciscos | 0:f16f5fb2d1b9 | 202 | void ImprimirMatriz(float Matriz[3][4]) |
| franciscos | 0:f16f5fb2d1b9 | 203 | { |
| franciscos | 0:f16f5fb2d1b9 | 204 | int i,j; |
| franciscos | 0:f16f5fb2d1b9 | 205 | for(i=0;i<3;i++) |
| franciscos | 0:f16f5fb2d1b9 | 206 | { |
| franciscos | 0:f16f5fb2d1b9 | 207 | for(j=0;j<3;j++) |
| franciscos | 0:f16f5fb2d1b9 | 208 | { |
| franciscos | 0:f16f5fb2d1b9 | 209 | printf(" %7.2f", Matriz[i][j]); |
| franciscos | 0:f16f5fb2d1b9 | 210 | if(j==0) |
| franciscos | 0:f16f5fb2d1b9 | 211 | { |
| franciscos | 0:f16f5fb2d1b9 | 212 | printf("x"); |
| franciscos | 0:f16f5fb2d1b9 | 213 | } |
| franciscos | 0:f16f5fb2d1b9 | 214 | else if(j==1) |
| franciscos | 0:f16f5fb2d1b9 | 215 | { |
| franciscos | 0:f16f5fb2d1b9 | 216 | printf("y"); |
| franciscos | 0:f16f5fb2d1b9 | 217 | } |
| franciscos | 0:f16f5fb2d1b9 | 218 | else if(j==2) |
| franciscos | 0:f16f5fb2d1b9 | 219 | { |
| franciscos | 0:f16f5fb2d1b9 | 220 | printf("z"); |
| franciscos | 0:f16f5fb2d1b9 | 221 | } |
| franciscos | 0:f16f5fb2d1b9 | 222 | } |
| franciscos | 0:f16f5fb2d1b9 | 223 | printf("\t = %7.2f \n", Matriz[i][j]); |
| franciscos | 0:f16f5fb2d1b9 | 224 | } |
| franciscos | 0:f16f5fb2d1b9 | 225 | printf("\n\n"); |
| franciscos | 0:f16f5fb2d1b9 | 226 | } |
| franciscos | 0:f16f5fb2d1b9 | 227 | |
| franciscos | 0:f16f5fb2d1b9 | 228 | void IntercambiaFilas(float Matriz[][4], int F, int C) //Intercambio de filas si el valor (F,C)=0; |
| franciscos | 0:f16f5fb2d1b9 | 229 | { |
| franciscos | 0:f16f5fb2d1b9 | 230 | int i,j,k; |
| franciscos | 0:f16f5fb2d1b9 | 231 | float FAux1[4]; |
| franciscos | 0:f16f5fb2d1b9 | 232 | float FAux2[4]; |
| franciscos | 0:f16f5fb2d1b9 | 233 | |
| franciscos | 0:f16f5fb2d1b9 | 234 | if (Matriz[F][C]==0) |
| franciscos | 0:f16f5fb2d1b9 | 235 | { |
| franciscos | 0:f16f5fb2d1b9 | 236 | j=0; |
| franciscos | 0:f16f5fb2d1b9 | 237 | for(k=0;k<3;k++) |
| franciscos | 0:f16f5fb2d1b9 | 238 | { |
| franciscos | 0:f16f5fb2d1b9 | 239 | if (Matriz[k][C]!=0) |
| franciscos | 0:f16f5fb2d1b9 | 240 | { |
| franciscos | 0:f16f5fb2d1b9 | 241 | j=k; |
| franciscos | 0:f16f5fb2d1b9 | 242 | } |
| franciscos | 0:f16f5fb2d1b9 | 243 | if(j!=0) |
| franciscos | 0:f16f5fb2d1b9 | 244 | { |
| franciscos | 0:f16f5fb2d1b9 | 245 | k=3; |
| franciscos | 0:f16f5fb2d1b9 | 246 | } |
| franciscos | 0:f16f5fb2d1b9 | 247 | } |
| franciscos | 0:f16f5fb2d1b9 | 248 | /*if (k==3 && j==0) |
| franciscos | 0:f16f5fb2d1b9 | 249 | { |
| franciscos | 0:f16f5fb2d1b9 | 250 | printf("\n\n Nmms esta no es una matriz 3x3, resuelvela solo >:c \n\n"); |
| franciscos | 0:f16f5fb2d1b9 | 251 | }*/ |
| franciscos | 0:f16f5fb2d1b9 | 252 | |
| franciscos | 0:f16f5fb2d1b9 | 253 | printf("\t Se intercambia la fila %d por la fila %d \n\n", F+1, j+1); |
| franciscos | 0:f16f5fb2d1b9 | 254 | for(i=0;i<4;i++) |
| franciscos | 0:f16f5fb2d1b9 | 255 | { |
| franciscos | 0:f16f5fb2d1b9 | 256 | FAux1[i]=Matriz[F][i]; |
| franciscos | 0:f16f5fb2d1b9 | 257 | FAux2[i]=Matriz[j][i]; |
| franciscos | 0:f16f5fb2d1b9 | 258 | } |
| franciscos | 0:f16f5fb2d1b9 | 259 | for(i=0;i<4;i++) |
| franciscos | 0:f16f5fb2d1b9 | 260 | { |
| franciscos | 0:f16f5fb2d1b9 | 261 | Matriz[F][i]=FAux2[i]; |
| franciscos | 0:f16f5fb2d1b9 | 262 | Matriz[j][i]=FAux1[i]; |
| franciscos | 0:f16f5fb2d1b9 | 263 | } |
| franciscos | 0:f16f5fb2d1b9 | 264 | } |
| franciscos | 0:f16f5fb2d1b9 | 265 | } |
| franciscos | 0:f16f5fb2d1b9 | 266 | |
| franciscos | 0:f16f5fb2d1b9 | 267 | void EliminacionDiag(float Matriz[][4], int C) |
| franciscos | 0:f16f5fb2d1b9 | 268 | { |
| franciscos | 0:f16f5fb2d1b9 | 269 | float coef,coef1; |
| franciscos | 0:f16f5fb2d1b9 | 270 | float FAux1[4]; |
| franciscos | 0:f16f5fb2d1b9 | 271 | float FAux2[4]; |
| franciscos | 0:f16f5fb2d1b9 | 272 | int i,j,k; |
| franciscos | 0:f16f5fb2d1b9 | 273 | coef=Matriz[C][C]; |
| franciscos | 0:f16f5fb2d1b9 | 274 | |
| franciscos | 0:f16f5fb2d1b9 | 275 | for (i=0;i<3;i++) |
| franciscos | 0:f16f5fb2d1b9 | 276 | { |
| franciscos | 0:f16f5fb2d1b9 | 277 | |
| franciscos | 0:f16f5fb2d1b9 | 278 | if(i!=C) |
| franciscos | 0:f16f5fb2d1b9 | 279 | { |
| franciscos | 0:f16f5fb2d1b9 | 280 | if(Matriz[i][C]!=0) |
| franciscos | 0:f16f5fb2d1b9 | 281 | { |
| franciscos | 0:f16f5fb2d1b9 | 282 | coef1=Matriz[i][C]; |
| franciscos | 0:f16f5fb2d1b9 | 283 | |
| franciscos | 0:f16f5fb2d1b9 | 284 | for (j=0; j<4; j++) |
| franciscos | 0:f16f5fb2d1b9 | 285 | { |
| franciscos | 0:f16f5fb2d1b9 | 286 | FAux1[j]=coef1*Matriz[C][j]; |
| franciscos | 0:f16f5fb2d1b9 | 287 | FAux2[j]=coef*Matriz[i][j]; |
| franciscos | 0:f16f5fb2d1b9 | 288 | } |
| franciscos | 0:f16f5fb2d1b9 | 289 | |
| franciscos | 0:f16f5fb2d1b9 | 290 | for (k=0;k<4;k++) |
| franciscos | 0:f16f5fb2d1b9 | 291 | { |
| franciscos | 0:f16f5fb2d1b9 | 292 | FAux2[k]=FAux1[k]-FAux2[k]; |
| franciscos | 0:f16f5fb2d1b9 | 293 | } |
| franciscos | 0:f16f5fb2d1b9 | 294 | |
| franciscos | 0:f16f5fb2d1b9 | 295 | for (k=0;k<4;k++) |
| franciscos | 0:f16f5fb2d1b9 | 296 | { |
| franciscos | 0:f16f5fb2d1b9 | 297 | Matriz[i][k]=FAux2[k]; |
| franciscos | 0:f16f5fb2d1b9 | 298 | } |
| franciscos | 0:f16f5fb2d1b9 | 299 | } |
| franciscos | 0:f16f5fb2d1b9 | 300 | else |
| franciscos | 0:f16f5fb2d1b9 | 301 | { |
| franciscos | 0:f16f5fb2d1b9 | 302 | printf("\n\n\t dato (%d,%d) es cero \n\n",i,C); |
| franciscos | 0:f16f5fb2d1b9 | 303 | } |
| franciscos | 0:f16f5fb2d1b9 | 304 | } |
| franciscos | 0:f16f5fb2d1b9 | 305 | } |
| franciscos | 0:f16f5fb2d1b9 | 306 | } |
| franciscos | 0:f16f5fb2d1b9 | 307 | /* END functions */ |
| franciscos | 0:f16f5fb2d1b9 | 308 | |
| franciscos | 0:f16f5fb2d1b9 | 309 | /* END program */ |
| franciscos | 0:f16f5fb2d1b9 | 310 | |
| franciscos | 0:f16f5fb2d1b9 | 311 | /*+----------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 312 | *+ La documentación va aquí!: |
| franciscos | 0:f16f5fb2d1b9 | 313 | *+----------------------------------------------------------------------------- |
| franciscos | 0:f16f5fb2d1b9 | 314 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 315 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 316 | *+----------------------------------------------------------------------------* |
| franciscos | 0:f16f5fb2d1b9 | 317 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 318 | *+ Powered by |
| franciscos | 0:f16f5fb2d1b9 | 319 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 320 | *+ T H E A N T U L I U ' S T E A M R&D Unltd |
| franciscos | 0:f16f5fb2d1b9 | 321 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 322 | *+ Research, Development, Systems, Equipment, Support & Spare Parts. |
| franciscos | 0:f16f5fb2d1b9 | 323 | *+ (C) Copyright 1989-2019, All Rights Reserved |
| franciscos | 0:f16f5fb2d1b9 | 324 | *+ |
| franciscos | 0:f16f5fb2d1b9 | 325 | *+ Welcome to The Beaners Proyect Community! |
| franciscos | 0:f16f5fb2d1b9 | 326 | *+----------------------------------------------------------------------------*/ |
| franciscos | 0:f16f5fb2d1b9 | 327 | |
| franciscos | 0:f16f5fb2d1b9 | 328 | /* END documentation */ |
| franciscos | 0:f16f5fb2d1b9 | 329 | |
| franciscos | 0:f16f5fb2d1b9 | 330 | /* END Mbed */ |