|
|
| version 1.1, 2006/01/19 17:16:29 | version 1.2, 2006/02/15 13:00:30 |
|---|---|
| Line 1 | Line 1 |
| /********************************************************************/ | |
| /* CalculosMatrices.h */ | |
| /* */ | |
| /* Copyright (c) 1997-2006 Rafael Rico (rafael.rico@uah.es) */ | |
| /* */ | |
| /* This file is part of ADD version 5.10. */ | |
| /* */ | |
| /* ADD is free software; you can redistribute it and/or modify */ | |
| /* it under the terms of the GNU General Public License as */ | |
| /* published by the Free Software Foundation; either version 2 of */ | |
| /* the License, or (at your option) any later version. */ | |
| /* */ | |
| /* ADD is distributed in the hope that it will be useful, */ | |
| /* but WITHOUT ANY WARRANTY; without even the implied warranty of */ | |
| /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */ | |
| /* GNU General Public License for more details. */ | |
| /* */ | |
| /* You should have received a copy of the GNU General Public */ | |
| /* License along with ADD; if not, write to the Free Software */ | |
| /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */ | |
| /* 02111-1307 USA */ | |
| /* */ | |
| /* --------------------------- History --------------------------- */ | |
| /* */ | |
| /* Revision 1.2. 01/2006 */ | |
| /* Added GPL License and JavaDoc style documentation */ | |
| /* */ | |
| /* Revision 1.1. 09/2005 */ | |
| /* Initial Revision */ | |
| /* */ | |
| /********************************************************************/ | |
| /******************************************************************************/ | /******************************************************************************/ |
| /* MÓDULO: CalculosMatrices.c */ | /* MÓDULO: CalculosMatrices.c */ |
| /* */ | /* */ |
| Line 78 extern unsigned long *distribucionpasos; | Line 45 extern unsigned long *distribucionpasos; |
| unsigned int CalcularMatrizCaminos(unsigned char **D, unsigned char **C) | unsigned int CalcularMatrizCaminos(unsigned char **D, unsigned char **C) |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| unsigned char *v; /* vector temporal */ | unsigned char *v; /* vector temporal */ |
| unsigned char **tmp; /* matriz temporal */ | unsigned char **tmp; /* matriz temporal */ |
| unsigned int i, j, k, potencia; | unsigned int i, j, k, potencia; |
| unsigned int suma; | unsigned int suma; |
| unsigned char matriz_nula; | unsigned char matriz_nula; |
| if(D == NULL) | if(D == NULL) |
| { | { |
| sprintf(mensaje, "[CalcularMatrizCaminos] La matriz D indicada no existe"); | sprintf(mensaje, "[CalcularMatrizCaminos] La matriz D indicada no existe"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| } | } |
| /* necesito un vector y una matriz temporal de 'unsigned char' */ | /* necesito un vector y una matriz temporal de 'unsigned char' */ |
| /* para calcular las sucesivas potencias de la matriz D */ | /* para calcular las sucesivas potencias de la matriz D */ |
| /* hago la reserva de memoria para el vector */ | |
| v = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (v == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* hago la reserva de memoria para la matriz */ | |
| /* 1º un puntero por cada fila */ | |
| tmp = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (tmp == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* 2º un 'char' por cada columna */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| tmp[i] = calloc(configuracion.ventana, sizeof(unsigned char)); | |
| if (tmp[i] == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| } | |
| /* inicio la matriz temporal con la matriz 'identidad' (1s en la diagonal) */ | |
| /* al reservar con 'calloc' se rellena con 0s */ | |
| for(i=0; i<configuracion.ventana; i++) tmp[i][i] = 1; | |
| /* calculo sucesivas potencias de la matriz 'D' hasta que se anule */ | |
| /* utilizo la expresión TMP * D = TMP */ | |
| /* el uso del vector me permite escribir el resultado sobre 'TMP' */ | |
| for(potencia=0; potencia<configuracion.ventana; potencia++) | |
| { | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(k=0; k<configuracion.ventana; k++) v[k]=tmp[i][k]; | |
| for(j=0; j<configuracion.ventana; j++) | |
| { | |
| suma = 0; | |
| for(k=0; k<configuracion.ventana; k++) | |
| { | |
| suma += v[k] * D[k][j]; | |
| } | |
| tmp[i][j] = suma; | |
| } | |
| } | |
| /* la matriz 'TMP' contiene la n-ésima+1 potencia de 'D' */ | |
| /* ahora evalúo si el resultado es la matriz nula */ | |
| /* si es así no tengo que continuar ya que no hay */ | |
| /* caminos de dependencias de longitud mayor */ | |
| matriz_nula = SI; | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) | |
| { | |
| if(tmp[i][j] != 0) {matriz_nula = NO; break;} | |
| } | |
| if(matriz_nula == NO) break; | |
| } | |
| if(matriz_nula == SI) break; | |
| /* sumo la nueva potencia de la matriz de dependencias D^^p */ | |
| /* a la matriz de caminos parcial 'C' si me han pasado un puntero no nulo */ | |
| if(*C != NULL) | |
| { | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) C[i][j] += tmp[i][j]; | |
| } | |
| } | |
| } | |
| /* libero la memoria reservada anteriormente */ | |
| /* libero el vector */ | |
| free(v); | |
| /* libero la matriz */ | |
| for(i=0; i<configuracion.ventana; i++) free(tmp[i]); free(tmp); | |
| return potencia+1; /* devuelve el rango de la primera potencia nula de 'D' */ | /* hago la reserva de memoria para el vector */ |
| v = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (v == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* hago la reserva de memoria para la matriz */ | |
| /* 1º un puntero por cada fila */ | |
| tmp = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (tmp == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* 2º un 'char' por cada columna */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| tmp[i] = calloc(configuracion.ventana, sizeof(unsigned char)); | |
| if (tmp[i] == NULL) | |
| { | |
| sprintf(mensaje, "[CalcularMatrizCaminos] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| } | |
| /* inicio la matriz temporal con la matriz 'identidad' (1s en la diagonal) */ | |
| /* al reservar con 'calloc' se rellena con 0s */ | |
| for(i=0; i<configuracion.ventana; i++) tmp[i][i] = 1; | |
| /* calculo sucesivas potencias de la matriz 'D' hasta que se anule */ | |
| /* utilizo la expresión TMP * D = TMP */ | |
| /* el uso del vector me permite escribir el resultado sobre 'TMP' */ | |
| for(potencia=0; potencia<configuracion.ventana; potencia++) | |
| { | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(k=0; k<configuracion.ventana; k++) v[k]=tmp[i][k]; | |
| for(j=0; j<configuracion.ventana; j++) | |
| { | |
| suma = 0; | |
| for(k=0; k<configuracion.ventana; k++) | |
| { | |
| suma += v[k] * D[k][j]; | |
| } | |
| tmp[i][j] = suma; | |
| } | |
| } | |
| /* la matriz 'TMP' contiene la n-ésima+1 potencia de 'D' */ | |
| /* ahora evalúo si el resultado es la matriz nula */ | |
| /* si es así no tengo que continuar ya que no hay */ | |
| /* caminos de dependencias de longitud mayor */ | |
| matriz_nula = SI; | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) | |
| { | |
| if(tmp[i][j] != 0) {matriz_nula = NO; break;} | |
| } | |
| if(matriz_nula == NO) break; | |
| } | |
| if(matriz_nula == SI) break; | |
| /* sumo la nueva potencia de la matriz de dependencias D^^p */ | |
| /* a la matriz de caminos parcial 'C' si me han pasado un puntero no nulo */ | |
| if(*C != NULL) | |
| { | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) C[i][j] += tmp[i][j]; | |
| } | |
| } | |
| } | |
| /* libero la memoria reservada anteriormente */ | |
| /* libero el vector */ | |
| free(v); | |
| /* libero la matriz */ | |
| for(i=0; i<configuracion.ventana; i++) free(tmp[i]); free(tmp); | |
| return potencia+1; /* devuelve el rango de la primera potencia nula de 'D' */ | |
| } | } |
| Line 198 unsigned int CalcularMatrizCaminos(unsig | Line 165 unsigned int CalcularMatrizCaminos(unsig |
| unsigned int ListaOrdenParcial(unsigned char **D, char **lista) | unsigned int ListaOrdenParcial(unsigned char **D, char **lista) |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| unsigned char *lanzadas; /* vector de instrucciones lanzadas */ | unsigned char *lanzadas; /* vector de instrucciones lanzadas */ |
| unsigned char **tmp; /* matriz temporal */ | unsigned char **tmp; /* matriz temporal */ |
| unsigned int pasos, procesadas; | unsigned int pasos, procesadas; |
| unsigned int i, j; | unsigned int i, j; |
| char cadena[6]; /* cadena para pasar enteros a strings */ | char cadena[6]; /* cadena para pasar enteros a strings */ |
| if(D == NULL) | if(D == NULL) |
| { | { |
| sprintf(mensaje, "[ListaOrdenParcial] La matriz D indicada no existe"); | sprintf(mensaje, "[ListaOrdenParcial] La matriz D indicada no existe"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| } | } |
| /* necesito un vector y una matriz temporal de 'unsigned char' */ | |
| /* para calcular las sucesivas potencias de la matriz D */ | |
| /* hago la reserva de memoria para el vector */ | |
| lanzadas = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (lanzadas == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* hago la reserva de memoria para la matriz */ | |
| /* 1º un puntero por cada fila */ | |
| tmp = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (tmp == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* 2º un 'char' por cada columna */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| tmp[i] = calloc(configuracion.ventana, sizeof(unsigned char)); | |
| if (tmp[i] == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| } | |
| /* copio la matriz de dependencias D sobre la temporal */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) tmp[i][j] = D[i][j]; | |
| } | |
| /* pongo a cero el vector de lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) lanzadas[i] = 0; | |
| /* inicio el contador de pasos de computaci¢n */ | /* necesito un vector y una matriz temporal de 'unsigned char' */ |
| pasos = 0; | /* para calcular las sucesivas potencias de la matriz D */ |
| /* hago la reserva de memoria para el vector */ | |
| lanzadas = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (lanzadas == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* inicio el contador de instrucciones procesadas */ | /* hago la reserva de memoria para la matriz */ |
| /* 1º un puntero por cada fila */ | |
| tmp = calloc(configuracion.ventana , sizeof(unsigned char *)); | |
| if (tmp == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| /* 2º un 'char' por cada columna */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| tmp[i] = calloc(configuracion.ventana, sizeof(unsigned char)); | |
| if (tmp[i] == NULL) | |
| { | |
| sprintf(mensaje, "[ListaOrdenParcial] Memoria insuficiente"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| /* el programa finaliza si no hay memoria suficiente */ | |
| } | |
| } | |
| /* copio la matriz de dependencias D sobre la temporal */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<configuracion.ventana; j++) tmp[i][j] = D[i][j]; | |
| } | |
| /* pongo a cero el vector de lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) lanzadas[i] = 0; | |
| /* inicio el contador de pasos de computaci¢n */ | |
| pasos = 0; | |
| /* inicio el contador de instrucciones procesadas */ | |
| procesadas = 0; | procesadas = 0; |
| while(configuracion.ventana - procesadas) | while(configuracion.ventana - procesadas) |
| { | { |
| pasos++; | pasos++; |
| /* busco tareas independientes entre las NO lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==0) /* si es 0 significa que no se ha lanzado */ | |
| { | |
| /* miro si el vector de dependencias es nulo */ | |
| for(j=0; j<i; j++) | |
| { | |
| if(tmp[i][j]!=0) break; | |
| } | |
| if(j==i) | |
| { | |
| lanzadas[i]=1; /* la instrucci¢n es independiente */ | |
| /* anoto la instrucción en la lista del orden parcial */ | |
| /* en el paso de computación en curso */ | |
| if(lista != NULL) | |
| { | |
| sprintf(cadena, "%u", i); | |
| AgregarElementoLista(lista[pasos-1], cadena); | |
| } | |
| } | |
| } | |
| } | |
| /* ahora actualizo la matriz de dependencias con la lista de */ | |
| /* instrucciones independientes que han sido lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==1) /* si es 1 significa que es independiente */ | |
| { | |
| for(j=i+1; j<configuracion.ventana; j++) | |
| { | |
| if(tmp[j][i]!=0) tmp[j][i]=0; | |
| } | |
| } | |
| } | |
| /* ahora actualizo el vector de lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==1) | |
| { | |
| lanzadas[i]=2; /* significa que ha sido procesada */ | |
| procesadas++; | |
| } | |
| } | |
| } | |
| /* libero la memoria reservada anteriormente */ | |
| /* libero el vector */ | |
| free(lanzadas); | |
| /* libero la matriz */ | |
| for(i=0; i<configuracion.ventana; i++) free(tmp[i]); free(tmp); | |
| return pasos; | /* busco tareas independientes entre las NO lanzadas */ |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==0) /* si es 0 significa que no se ha lanzado */ | |
| { | |
| /* miro si el vector de dependencias es nulo */ | |
| for(j=0; j<i; j++) | |
| { | |
| if(tmp[i][j]!=0) break; | |
| } | |
| if(j==i) | |
| { | |
| lanzadas[i]=1; /* la instrucci¢n es independiente */ | |
| /* anoto la instrucción en la lista del orden parcial */ | |
| /* en el paso de computación en curso */ | |
| if(lista != NULL) | |
| { | |
| sprintf(cadena, "%u", i); | |
| AgregarElementoLista(lista[pasos-1], cadena); | |
| } | |
| } | |
| } | |
| } | |
| /* ahora actualizo la matriz de dependencias con la lista de */ | |
| /* instrucciones independientes que han sido lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==1) /* si es 1 significa que es independiente */ | |
| { | |
| for(j=i+1; j<configuracion.ventana; j++) | |
| { | |
| if(tmp[j][i]!=0) tmp[j][i]=0; | |
| } | |
| } | |
| } | |
| /* ahora actualizo el vector de lanzadas */ | |
| for(i=0; i<configuracion.ventana; i++) | |
| { | |
| if(lanzadas[i]==1) | |
| { | |
| lanzadas[i]=2; /* significa que ha sido procesada */ | |
| procesadas++; | |
| } | |
| } | |
| } | |
| /* libero la memoria reservada anteriormente */ | |
| /* libero el vector */ | |
| free(lanzadas); | |
| /* libero la matriz */ | |
| for(i=0; i<configuracion.ventana; i++) free(tmp[i]); free(tmp); | |
| return pasos; | |
| } | } |
| Line 330 unsigned int ListaOrdenParcial(unsigned | Line 297 unsigned int ListaOrdenParcial(unsigned |
| unsigned int Acoplamiento(unsigned char **D) | unsigned int Acoplamiento(unsigned char **D) |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| unsigned int i, j; | unsigned int i, j; |
| unsigned int acoplo = 0; | unsigned int acoplo = 0; |
| if(D == NULL) | |
| { | |
| sprintf(mensaje, "[Acoplamiento] La matriz D indicada no existe"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| } | |
| /* puesto que las matrices se obtienen de la secuencia de código */ | |
| /* estamos seguros de que son canónicas y, por tanto, no es necesario */ | |
| /* hacer el recorrido completo de todas sus componentes */ | |
| /* basta con empezar en la instrucción 1 y recorres columnas hasta la diagonal */ | |
| for(i=1; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<i; j++) if(D[i][j] != 0) acoplo++; | |
| } | |
| return acoplo; | if(D == NULL) |
| { | |
| sprintf(mensaje, "[Acoplamiento] La matriz D indicada no existe"); | |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | |
| } | |
| /* puesto que las matrices se obtienen de la secuencia de código */ | |
| /* estamos seguros de que son canónicas y, por tanto, no es necesario */ | |
| /* hacer el recorrido completo de todas sus componentes */ | |
| /* basta con empezar en la instrucción 1 y recorres columnas hasta la diagonal */ | |
| for(i=1; i<configuracion.ventana; i++) | |
| { | |
| for(j=0; j<i; j++) if(D[i][j] != 0) acoplo++; | |
| } | |
| return acoplo; | |
| } | } |
| Line 363 unsigned int Acoplamiento(unsigned char | Line 330 unsigned int Acoplamiento(unsigned char |
| char ** CrearArrayStrings(unsigned int num_cadenas, unsigned int tamano) | char ** CrearArrayStrings(unsigned int num_cadenas, unsigned int tamano) |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| unsigned int i; | unsigned int i; |
| char **listado; | char **listado; |
| /* 1º un puntero por cada fila */ | /* 1º un puntero por cada fila */ |
| listado = calloc(num_cadenas, sizeof(char *)); | listado = calloc(num_cadenas, sizeof(char *)); |
| if (listado == NULL) | if (listado == NULL) |
| { | { |
| sprintf(mensaje, "[CrearArrayStrings] Memoria insuficiente"); | sprintf(mensaje, "[CrearArrayStrings] Memoria insuficiente"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| /* el programa finaliza si no hay memoria suficiente */ | /* el programa finaliza si no hay memoria suficiente */ |
| } | } |
| /* 2º cuatro 'char' por cada columna (3 caracteres de número y un separador ':') */ | /* 2º cuatro 'char' por cada columna (3 caracteres de número y un separador ':') */ |
| for(i=0; i<configuracion.ventana; i++) | for(i=0; i<configuracion.ventana; i++) |
| { | { |
| listado[i] = calloc(tamano, sizeof(char)); | listado[i] = calloc(tamano, sizeof(char)); |
| if (listado[i] == NULL) | if (listado[i] == NULL) |
| { | { |
| sprintf(mensaje, "[CrearArrayStrings] Memoria insuficiente"); | sprintf(mensaje, "[CrearArrayStrings] Memoria insuficiente"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| /* el programa finaliza si no hay memoria suficiente */ | /* el programa finaliza si no hay memoria suficiente */ |
| } | } |
| } | } |
| return listado; | return listado; |
| } | } |
| Line 397 char ** CrearArrayStrings(unsigned int n | Line 364 char ** CrearArrayStrings(unsigned int n |
| void CrearListaOrdenParcial() | void CrearListaOrdenParcial() |
| { | { |
| unsigned int dim; | unsigned int dim; |
| dim = configuracion.ventana; | dim = configuracion.ventana; |
| OrdenParcial = CrearArrayStrings(dim, 4*dim); | OrdenParcial = CrearArrayStrings(dim, 4*dim); |
| } | } |
| Line 409 void CrearListaOrdenParcial() | Line 376 void CrearListaOrdenParcial() |
| void IniciarListaOrdenParcial() | void IniciarListaOrdenParcial() |
| { | { |
| unsigned int i, dim; | unsigned int i, dim; |
| dim = configuracion.ventana; | dim = configuracion.ventana; |
| if(OrdenParcial != NULL) for(i=0; i<dim; i++) *OrdenParcial[i] = '\0'; | if(OrdenParcial != NULL) for(i=0; i<dim; i++) *OrdenParcial[i] = '\0'; |
| } | } |
| Line 421 void IniciarListaOrdenParcial() | Line 388 void IniciarListaOrdenParcial() |
| void LiberarMemoriaListaOrdenParcial() | void LiberarMemoriaListaOrdenParcial() |
| { | { |
| unsigned int i,dim; | unsigned int i,dim; |
| dim = configuracion.ventana; | dim = configuracion.ventana; |
| if(OrdenParcial != NULL) | if(OrdenParcial != NULL) |
| { | { |
| for(i=0; i<dim; i++) | for(i=0; i<dim; i++) |
| { | { |
| free(OrdenParcial[i]); | free(OrdenParcial[i]); |
| } | } |
| free(OrdenParcial); | free(OrdenParcial); |
| } | } |
| } | } |
| Line 440 void LiberarMemoriaListaOrdenParcial() | Line 407 void LiberarMemoriaListaOrdenParcial() |
| void CrearMatrizCaminos() | void CrearMatrizCaminos() |
| { | { |
| matrizC = CrearMatriz(); | matrizC = CrearMatriz(); |
| } | } |
| Line 448 void CrearMatrizCaminos() | Line 415 void CrearMatrizCaminos() |
| void IniciarMatrizCaminos() | void IniciarMatrizCaminos() |
| { | { |
| IniciarMatriz(matrizC); | IniciarMatriz(matrizC); |
| } | } |
| Line 456 void IniciarMatrizCaminos() | Line 423 void IniciarMatrizCaminos() |
| void LiberarMemoriaMatrizCaminos() | void LiberarMemoriaMatrizCaminos() |
| { | { |
| LiberarMemoriaMatriz(matrizC); | LiberarMemoriaMatriz(matrizC); |
| } | } |
| Line 464 void LiberarMemoriaMatrizCaminos() | Line 431 void LiberarMemoriaMatrizCaminos() |
| parametromatriz * CrearVariableAgregada() | parametromatriz * CrearVariableAgregada() |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| parametromatriz *variable; | parametromatriz *variable; |
| variable = calloc(1, sizeof(parametromatriz)); | variable = calloc(1, sizeof(parametromatriz)); |
| if (variable == NULL) | if (variable == NULL) |
| { | { |
| sprintf(mensaje, "[CrearVariableAgragada] Memoria insuficiente"); | sprintf(mensaje, "[CrearVariableAgragada] Memoria insuficiente"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| /* el programa finaliza si no hay memoria suficiente */ | /* el programa finaliza si no hay memoria suficiente */ |
| } | } |
| return variable; | return variable; |
| } | } |
| Line 483 parametromatriz * CrearVariableAgregada( | Line 450 parametromatriz * CrearVariableAgregada( |
| void IniciarVariableAgregada(parametromatriz *variable) | void IniciarVariableAgregada(parametromatriz *variable) |
| { | { |
| variable->Ddatoexp = 0.0; | variable->Ddatoexp = 0.0; |
| variable->Ddir_exp = 0.0; | variable->Ddir_exp = 0.0; |
| variable->Dpilaexp = 0.0; | variable->Dpilaexp = 0.0; |
| variable->Destadoexp = 0.0; | variable->Destadoexp = 0.0; |
| variable->Ddatoimp = 0.0; | variable->Ddatoimp = 0.0; |
| variable->Ddir_imp = 0.0; | variable->Ddir_imp = 0.0; |
| variable->Dpilaimp = 0.0; | variable->Dpilaimp = 0.0; |
| variable->Destadoimp = 0.0; | variable->Destadoimp = 0.0; |
| variable->ADdatoexp = 0.0; | variable->ADdatoexp = 0.0; |
| variable->ADdir_exp = 0.0; | variable->ADdir_exp = 0.0; |
| variable->ADpilaexp = 0.0; | variable->ADpilaexp = 0.0; |
| variable->ADestadoexp = 0.0; | variable->ADestadoexp = 0.0; |
| variable->ADdatoimp = 0.0; | variable->ADdatoimp = 0.0; |
| variable->ADdir_imp = 0.0; | variable->ADdir_imp = 0.0; |
| variable->ADpilaimp = 0.0; | variable->ADpilaimp = 0.0; |
| variable->ADestadoimp = 0.0; | variable->ADestadoimp = 0.0; |
| variable->Sdatoexp = 0.0; | variable->Sdatoexp = 0.0; |
| variable->Sdir_exp = 0.0; | variable->Sdir_exp = 0.0; |
| variable->Spilaexp = 0.0; | variable->Spilaexp = 0.0; |
| variable->Sestadoexp = 0.0; | variable->Sestadoexp = 0.0; |
| variable->Sdatoimp = 0.0; | variable->Sdatoimp = 0.0; |
| variable->Sdir_imp = 0.0; | variable->Sdir_imp = 0.0; |
| variable->Spilaimp = 0.0; | variable->Spilaimp = 0.0; |
| variable->Sestadoimp = 0.0; | variable->Sestadoimp = 0.0; |
| variable->D = 0.0; | variable->D = 0.0; |
| } | } |
| Line 524 void IniciarVariableAgregada(parametroma | Line 491 void IniciarVariableAgregada(parametroma |
| /* | /* |
| void CalcularPromedioVariableAgregada(parametromatriz *media, parametromatriz *actual, unsigned long n) | void CalcularPromedioVariableAgregada(parametromatriz *media, parametromatriz *actual, unsigned long n) |
| { | { |
| if(matriz.Ddatoexp != NULL) media->Ddatoexp = ((n - 1) * media->Ddatoexp + actual->Ddatoexp) / n; | if(matriz.Ddatoexp != NULL) media->Ddatoexp = ((n - 1) * media->Ddatoexp + actual->Ddatoexp) / n; |
| if(matriz.Ddir_exp != NULL) media->Ddir_exp = ((n - 1) * media->Ddir_exp + actual->Ddir_exp) / n; | if(matriz.Ddir_exp != NULL) media->Ddir_exp = ((n - 1) * media->Ddir_exp + actual->Ddir_exp) / n; |
| if(matriz.Dpilaexp != NULL) media->Dpilaexp = ((n - 1) * media->Dpilaexp + actual->Dpilaexp) / n; | if(matriz.Dpilaexp != NULL) media->Dpilaexp = ((n - 1) * media->Dpilaexp + actual->Dpilaexp) / n; |
| if(matriz.Destadoexp != NULL) media->Destadoexp = ((n - 1) * media->Destadoexp + actual->Destadoexp) / n; | if(matriz.Destadoexp != NULL) media->Destadoexp = ((n - 1) * media->Destadoexp + actual->Destadoexp) / n; |
| if(matriz.Ddatoimp != NULL) media->Ddatoimp = ((n - 1) * media->Ddatoimp + actual->Ddatoimp) / n; | if(matriz.Ddatoimp != NULL) media->Ddatoimp = ((n - 1) * media->Ddatoimp + actual->Ddatoimp) / n; |
| if(matriz.Ddir_imp != NULL) media->Ddir_imp = ((n - 1) * media->Ddir_imp + actual->Ddir_imp) / n; | if(matriz.Ddir_imp != NULL) media->Ddir_imp = ((n - 1) * media->Ddir_imp + actual->Ddir_imp) / n; |
| if(matriz.Dpilaimp != NULL) media->Dpilaimp = ((n - 1) * media->Dpilaimp + actual->Dpilaimp) / n; | if(matriz.Dpilaimp != NULL) media->Dpilaimp = ((n - 1) * media->Dpilaimp + actual->Dpilaimp) / n; |
| if(matriz.Destadoimp != NULL) media->Destadoimp = ((n - 1) * media->Destadoimp + actual->Destadoimp) / n; | if(matriz.Destadoimp != NULL) media->Destadoimp = ((n - 1) * media->Destadoimp + actual->Destadoimp) / n; |
| if(matriz.ADdatoexp != NULL) media->ADdatoexp = ((n - 1) * media->ADdatoexp + actual->ADdatoexp) / n; | if(matriz.ADdatoexp != NULL) media->ADdatoexp = ((n - 1) * media->ADdatoexp + actual->ADdatoexp) / n; |
| if(matriz.ADdir_exp != NULL) media->ADdir_exp = ((n - 1) * media->ADdir_exp + actual->ADdir_exp) / n; | if(matriz.ADdir_exp != NULL) media->ADdir_exp = ((n - 1) * media->ADdir_exp + actual->ADdir_exp) / n; |
| if(matriz.ADpilaexp != NULL) media->ADpilaexp = ((n - 1) * media->ADpilaexp + actual->ADpilaexp) / n; | if(matriz.ADpilaexp != NULL) media->ADpilaexp = ((n - 1) * media->ADpilaexp + actual->ADpilaexp) / n; |
| if(matriz.ADestadoexp != NULL) media->ADestadoexp = ((n - 1) * media->ADestadoexp + actual->ADestadoexp) / n; | if(matriz.ADestadoexp != NULL) media->ADestadoexp = ((n - 1) * media->ADestadoexp + actual->ADestadoexp) / n; |
| if(matriz.ADdatoimp != NULL) media->ADdatoimp = ((n - 1) * media->ADdatoimp + actual->ADdatoimp) / n; | if(matriz.ADdatoimp != NULL) media->ADdatoimp = ((n - 1) * media->ADdatoimp + actual->ADdatoimp) / n; |
| if(matriz.ADdir_imp != NULL) media->ADdir_imp = ((n - 1) * media->ADdir_imp + actual->ADdir_imp) / n; | if(matriz.ADdir_imp != NULL) media->ADdir_imp = ((n - 1) * media->ADdir_imp + actual->ADdir_imp) / n; |
| if(matriz.ADpilaimp != NULL) media->ADpilaimp = ((n - 1) * media->ADpilaimp + actual->ADpilaimp) / n; | if(matriz.ADpilaimp != NULL) media->ADpilaimp = ((n - 1) * media->ADpilaimp + actual->ADpilaimp) / n; |
| if(matriz.ADestadoimp != NULL) media->ADestadoimp = ((n - 1) * media->ADestadoimp + actual->ADestadoimp) / n; | if(matriz.ADestadoimp != NULL) media->ADestadoimp = ((n - 1) * media->ADestadoimp + actual->ADestadoimp) / n; |
| if(matriz.Sdatoexp != NULL) media->Sdatoexp = ((n - 1) * media->Sdatoexp + actual->Sdatoexp) / n; | if(matriz.Sdatoexp != NULL) media->Sdatoexp = ((n - 1) * media->Sdatoexp + actual->Sdatoexp) / n; |
| if(matriz.Sdir_exp != NULL) media->Sdir_exp = ((n - 1) * media->Sdir_exp + actual->Sdir_exp) / n; | if(matriz.Sdir_exp != NULL) media->Sdir_exp = ((n - 1) * media->Sdir_exp + actual->Sdir_exp) / n; |
| if(matriz.Spilaexp != NULL) media->Spilaexp = ((n - 1) * media->Spilaexp + actual->Spilaexp) / n; | if(matriz.Spilaexp != NULL) media->Spilaexp = ((n - 1) * media->Spilaexp + actual->Spilaexp) / n; |
| if(matriz.Sestadoexp != NULL) media->Sestadoexp = ((n - 1) * media->Sestadoexp + actual->Sestadoexp) / n; | if(matriz.Sestadoexp != NULL) media->Sestadoexp = ((n - 1) * media->Sestadoexp + actual->Sestadoexp) / n; |
| if(matriz.Sdatoimp != NULL) media->Sdatoimp = ((n - 1) * media->Sdatoimp + actual->Sdatoimp) / n; | if(matriz.Sdatoimp != NULL) media->Sdatoimp = ((n - 1) * media->Sdatoimp + actual->Sdatoimp) / n; |
| if(matriz.Sdir_imp != NULL) media->Sdir_imp = ((n - 1) * media->Sdir_imp + actual->Sdir_imp) / n; | if(matriz.Sdir_imp != NULL) media->Sdir_imp = ((n - 1) * media->Sdir_imp + actual->Sdir_imp) / n; |
| if(matriz.Spilaimp != NULL) media->Spilaimp = ((n - 1) * media->Spilaimp + actual->Spilaimp) / n; | if(matriz.Spilaimp != NULL) media->Spilaimp = ((n - 1) * media->Spilaimp + actual->Spilaimp) / n; |
| if(matriz.Sestadoimp != NULL) media->Sestadoimp = ((n - 1) * media->Sestadoimp + actual->Sestadoimp) / n; | if(matriz.Sestadoimp != NULL) media->Sestadoimp = ((n - 1) * media->Sestadoimp + actual->Sestadoimp) / n; |
| if(matriz.D != NULL) media->D = ((n - 1) * media->D + actual->D) / n; | if(matriz.D != NULL) media->D = ((n - 1) * media->D + actual->D) / n; |
| } | } |
| */ | */ |
| Line 565 void CalcularPromedioVariableAgregada(pa | Line 532 void CalcularPromedioVariableAgregada(pa |
| void CalcularPromedioVariableAgregada(parametromatriz *media, parametromatriz *actual, unsigned long n) | void CalcularPromedioVariableAgregada(parametromatriz *media, parametromatriz *actual, unsigned long n) |
| { | { |
| if(matriz.Ddatoexp != NULL) media->Ddatoexp = CalcularNuevoPromedio(media->Ddatoexp, actual->Ddatoexp, n); | if(matriz.Ddatoexp != NULL) media->Ddatoexp = CalcularNuevoPromedio(media->Ddatoexp, actual->Ddatoexp, n); |
| if(matriz.Ddir_exp != NULL) media->Ddir_exp = CalcularNuevoPromedio(media->Ddir_exp, actual->Ddir_exp, n); | if(matriz.Ddir_exp != NULL) media->Ddir_exp = CalcularNuevoPromedio(media->Ddir_exp, actual->Ddir_exp, n); |
| if(matriz.Dpilaexp != NULL) media->Dpilaexp = CalcularNuevoPromedio(media->Dpilaexp, actual->Dpilaexp, n); | if(matriz.Dpilaexp != NULL) media->Dpilaexp = CalcularNuevoPromedio(media->Dpilaexp, actual->Dpilaexp, n); |
| if(matriz.Destadoexp != NULL) media->Destadoexp = CalcularNuevoPromedio(media->Destadoexp, actual->Destadoexp, n); | if(matriz.Destadoexp != NULL) media->Destadoexp = CalcularNuevoPromedio(media->Destadoexp, actual->Destadoexp, n); |
| if(matriz.Ddatoimp != NULL) media->Ddatoimp = CalcularNuevoPromedio(media->Ddatoimp, actual->Ddatoimp, n); | if(matriz.Ddatoimp != NULL) media->Ddatoimp = CalcularNuevoPromedio(media->Ddatoimp, actual->Ddatoimp, n); |
| if(matriz.Ddir_imp != NULL) media->Ddir_imp = CalcularNuevoPromedio(media->Ddir_imp, actual->Ddir_imp, n); | if(matriz.Ddir_imp != NULL) media->Ddir_imp = CalcularNuevoPromedio(media->Ddir_imp, actual->Ddir_imp, n); |
| if(matriz.Dpilaimp != NULL) media->Dpilaimp = CalcularNuevoPromedio(media->Dpilaimp, actual->Dpilaimp, n); | if(matriz.Dpilaimp != NULL) media->Dpilaimp = CalcularNuevoPromedio(media->Dpilaimp, actual->Dpilaimp, n); |
| if(matriz.Destadoimp != NULL) media->Destadoimp = CalcularNuevoPromedio(media->Destadoimp, actual->Destadoimp, n); | if(matriz.Destadoimp != NULL) media->Destadoimp = CalcularNuevoPromedio(media->Destadoimp, actual->Destadoimp, n); |
| if(matriz.ADdatoexp != NULL) media->ADdatoexp = CalcularNuevoPromedio(media->ADdatoexp, actual->ADdatoexp, n); | if(matriz.ADdatoexp != NULL) media->ADdatoexp = CalcularNuevoPromedio(media->ADdatoexp, actual->ADdatoexp, n); |
| if(matriz.ADdir_exp != NULL) media->ADdir_exp = CalcularNuevoPromedio(media->ADdir_exp, actual->ADdir_exp, n); | if(matriz.ADdir_exp != NULL) media->ADdir_exp = CalcularNuevoPromedio(media->ADdir_exp, actual->ADdir_exp, n); |
| if(matriz.ADpilaexp != NULL) media->ADpilaexp = CalcularNuevoPromedio(media->ADpilaexp, actual->ADpilaexp, n); | if(matriz.ADpilaexp != NULL) media->ADpilaexp = CalcularNuevoPromedio(media->ADpilaexp, actual->ADpilaexp, n); |
| if(matriz.ADestadoexp != NULL) media->ADestadoexp = CalcularNuevoPromedio(media->ADestadoexp, actual->ADestadoexp, n); | if(matriz.ADestadoexp != NULL) media->ADestadoexp = CalcularNuevoPromedio(media->ADestadoexp, actual->ADestadoexp, n); |
| if(matriz.ADdatoimp != NULL) media->ADdatoimp = CalcularNuevoPromedio(media->ADdatoimp, actual->ADdatoimp, n); | if(matriz.ADdatoimp != NULL) media->ADdatoimp = CalcularNuevoPromedio(media->ADdatoimp, actual->ADdatoimp, n); |
| if(matriz.ADdir_imp != NULL) media->ADdir_imp = CalcularNuevoPromedio(media->ADdir_imp, actual->ADdir_imp, n); | if(matriz.ADdir_imp != NULL) media->ADdir_imp = CalcularNuevoPromedio(media->ADdir_imp, actual->ADdir_imp, n); |
| if(matriz.ADpilaimp != NULL) media->ADpilaimp = CalcularNuevoPromedio(media->ADpilaimp, actual->ADpilaimp, n); | if(matriz.ADpilaimp != NULL) media->ADpilaimp = CalcularNuevoPromedio(media->ADpilaimp, actual->ADpilaimp, n); |
| if(matriz.ADestadoimp != NULL) media->ADestadoimp = CalcularNuevoPromedio(media->ADestadoimp, actual->ADestadoimp, n); | if(matriz.ADestadoimp != NULL) media->ADestadoimp = CalcularNuevoPromedio(media->ADestadoimp, actual->ADestadoimp, n); |
| if(matriz.Sdatoexp != NULL) media->Sdatoexp = CalcularNuevoPromedio(media->Sdatoexp, actual->Sdatoexp, n); | if(matriz.Sdatoexp != NULL) media->Sdatoexp = CalcularNuevoPromedio(media->Sdatoexp, actual->Sdatoexp, n); |
| if(matriz.Sdir_exp != NULL) media->Sdir_exp = CalcularNuevoPromedio(media->Sdir_exp, actual->Sdir_exp, n); | if(matriz.Sdir_exp != NULL) media->Sdir_exp = CalcularNuevoPromedio(media->Sdir_exp, actual->Sdir_exp, n); |
| if(matriz.Spilaexp != NULL) media->Spilaexp = CalcularNuevoPromedio(media->Spilaexp, actual->Spilaexp, n); | if(matriz.Spilaexp != NULL) media->Spilaexp = CalcularNuevoPromedio(media->Spilaexp, actual->Spilaexp, n); |
| if(matriz.Sestadoexp != NULL) media->Sestadoexp = CalcularNuevoPromedio(media->Sestadoexp, actual->Sestadoexp, n); | if(matriz.Sestadoexp != NULL) media->Sestadoexp = CalcularNuevoPromedio(media->Sestadoexp, actual->Sestadoexp, n); |
| if(matriz.Sdatoimp != NULL) media->Sdatoimp = CalcularNuevoPromedio(media->Sdatoimp, actual->Sdatoimp, n); | if(matriz.Sdatoimp != NULL) media->Sdatoimp = CalcularNuevoPromedio(media->Sdatoimp, actual->Sdatoimp, n); |
| if(matriz.Sdir_imp != NULL) media->Sdir_imp = CalcularNuevoPromedio(media->Sdir_imp, actual->Sdir_imp, n); | if(matriz.Sdir_imp != NULL) media->Sdir_imp = CalcularNuevoPromedio(media->Sdir_imp, actual->Sdir_imp, n); |
| if(matriz.Spilaimp != NULL) media->Spilaimp = CalcularNuevoPromedio(media->Spilaimp, actual->Spilaimp, n); | if(matriz.Spilaimp != NULL) media->Spilaimp = CalcularNuevoPromedio(media->Spilaimp, actual->Spilaimp, n); |
| if(matriz.Sestadoimp != NULL) media->Sestadoimp = CalcularNuevoPromedio(media->Sestadoimp, actual->Sestadoimp, n); | if(matriz.Sestadoimp != NULL) media->Sestadoimp = CalcularNuevoPromedio(media->Sestadoimp, actual->Sestadoimp, n); |
| if(matriz.D != NULL) media->D = CalcularNuevoPromedio(media->D, actual->D, n); | if(matriz.D != NULL) media->D = CalcularNuevoPromedio(media->D, actual->D, n); |
| } | } |
| Line 606 void CalcularPromedioVariableAgregada(pa | Line 573 void CalcularPromedioVariableAgregada(pa |
| void CalcularPasosComputacion(parametromatriz *pasos) | void CalcularPasosComputacion(parametromatriz *pasos) |
| { | { |
| if(matriz.Ddatoexp != NULL) pasos->Ddatoexp = ListaOrdenParcial(matriz.Ddatoexp, NULL); | if(matriz.Ddatoexp != NULL) pasos->Ddatoexp = ListaOrdenParcial(matriz.Ddatoexp, NULL); |
| if(matriz.Ddir_exp != NULL) pasos->Ddir_exp = ListaOrdenParcial(matriz.Ddir_exp, NULL); | if(matriz.Ddir_exp != NULL) pasos->Ddir_exp = ListaOrdenParcial(matriz.Ddir_exp, NULL); |
| if(matriz.Dpilaexp != NULL) pasos->Dpilaexp = ListaOrdenParcial(matriz.Dpilaexp, NULL); | if(matriz.Dpilaexp != NULL) pasos->Dpilaexp = ListaOrdenParcial(matriz.Dpilaexp, NULL); |
| if(matriz.Destadoexp != NULL) pasos->Destadoexp = ListaOrdenParcial(matriz.Destadoexp, NULL); | if(matriz.Destadoexp != NULL) pasos->Destadoexp = ListaOrdenParcial(matriz.Destadoexp, NULL); |
| if(matriz.Ddatoimp != NULL) pasos->Ddatoimp = ListaOrdenParcial(matriz.Ddatoimp, NULL); | if(matriz.Ddatoimp != NULL) pasos->Ddatoimp = ListaOrdenParcial(matriz.Ddatoimp, NULL); |
| if(matriz.Ddir_imp != NULL) pasos->Ddir_imp = ListaOrdenParcial(matriz.Ddir_imp, NULL); | if(matriz.Ddir_imp != NULL) pasos->Ddir_imp = ListaOrdenParcial(matriz.Ddir_imp, NULL); |
| if(matriz.Dpilaimp != NULL) pasos->Dpilaimp = ListaOrdenParcial(matriz.Dpilaimp, NULL); | if(matriz.Dpilaimp != NULL) pasos->Dpilaimp = ListaOrdenParcial(matriz.Dpilaimp, NULL); |
| if(matriz.Destadoimp != NULL) pasos->Destadoimp = ListaOrdenParcial(matriz.Destadoimp, NULL); | if(matriz.Destadoimp != NULL) pasos->Destadoimp = ListaOrdenParcial(matriz.Destadoimp, NULL); |
| if(matriz.ADdatoexp != NULL) pasos->ADdatoexp = ListaOrdenParcial(matriz.ADdatoexp, NULL); | if(matriz.ADdatoexp != NULL) pasos->ADdatoexp = ListaOrdenParcial(matriz.ADdatoexp, NULL); |
| if(matriz.ADdir_exp != NULL) pasos->ADdir_exp = ListaOrdenParcial(matriz.ADdir_exp, NULL); | if(matriz.ADdir_exp != NULL) pasos->ADdir_exp = ListaOrdenParcial(matriz.ADdir_exp, NULL); |
| if(matriz.ADpilaexp != NULL) pasos->ADpilaexp = ListaOrdenParcial(matriz.ADpilaexp, NULL); | if(matriz.ADpilaexp != NULL) pasos->ADpilaexp = ListaOrdenParcial(matriz.ADpilaexp, NULL); |
| if(matriz.ADestadoexp != NULL) pasos->ADestadoexp = ListaOrdenParcial(matriz.ADestadoexp, NULL); | if(matriz.ADestadoexp != NULL) pasos->ADestadoexp = ListaOrdenParcial(matriz.ADestadoexp, NULL); |
| if(matriz.ADdatoimp != NULL) pasos->ADdatoimp = ListaOrdenParcial(matriz.ADdatoimp, NULL); | if(matriz.ADdatoimp != NULL) pasos->ADdatoimp = ListaOrdenParcial(matriz.ADdatoimp, NULL); |
| if(matriz.ADdir_imp != NULL) pasos->ADdir_imp = ListaOrdenParcial(matriz.ADdir_imp, NULL); | if(matriz.ADdir_imp != NULL) pasos->ADdir_imp = ListaOrdenParcial(matriz.ADdir_imp, NULL); |
| if(matriz.ADpilaimp != NULL) pasos->ADpilaimp = ListaOrdenParcial(matriz.ADpilaimp, NULL); | if(matriz.ADpilaimp != NULL) pasos->ADpilaimp = ListaOrdenParcial(matriz.ADpilaimp, NULL); |
| if(matriz.ADestadoimp != NULL) pasos->ADestadoimp = ListaOrdenParcial(matriz.ADestadoimp, NULL); | if(matriz.ADestadoimp != NULL) pasos->ADestadoimp = ListaOrdenParcial(matriz.ADestadoimp, NULL); |
| if(matriz.Sdatoexp != NULL) pasos->Sdatoexp = ListaOrdenParcial(matriz.Sdatoexp, NULL); | if(matriz.Sdatoexp != NULL) pasos->Sdatoexp = ListaOrdenParcial(matriz.Sdatoexp, NULL); |
| if(matriz.Sdir_exp != NULL) pasos->Sdir_exp = ListaOrdenParcial(matriz.Sdir_exp, NULL); | if(matriz.Sdir_exp != NULL) pasos->Sdir_exp = ListaOrdenParcial(matriz.Sdir_exp, NULL); |
| if(matriz.Spilaexp != NULL) pasos->Spilaexp = ListaOrdenParcial(matriz.Spilaexp, NULL); | if(matriz.Spilaexp != NULL) pasos->Spilaexp = ListaOrdenParcial(matriz.Spilaexp, NULL); |
| if(matriz.Sestadoexp != NULL) pasos->Sestadoexp = ListaOrdenParcial(matriz.Sestadoexp, NULL); | if(matriz.Sestadoexp != NULL) pasos->Sestadoexp = ListaOrdenParcial(matriz.Sestadoexp, NULL); |
| if(matriz.Sdatoimp != NULL) pasos->Sdatoimp = ListaOrdenParcial(matriz.Sdatoimp, NULL); | if(matriz.Sdatoimp != NULL) pasos->Sdatoimp = ListaOrdenParcial(matriz.Sdatoimp, NULL); |
| if(matriz.Sdir_imp != NULL) pasos->Sdir_imp = ListaOrdenParcial(matriz.Sdir_imp, NULL); | if(matriz.Sdir_imp != NULL) pasos->Sdir_imp = ListaOrdenParcial(matriz.Sdir_imp, NULL); |
| if(matriz.Spilaimp != NULL) pasos->Spilaimp = ListaOrdenParcial(matriz.Spilaimp, NULL); | if(matriz.Spilaimp != NULL) pasos->Spilaimp = ListaOrdenParcial(matriz.Spilaimp, NULL); |
| if(matriz.Sestadoimp != NULL) pasos->Sestadoimp = ListaOrdenParcial(matriz.Sestadoimp, NULL); | if(matriz.Sestadoimp != NULL) pasos->Sestadoimp = ListaOrdenParcial(matriz.Sestadoimp, NULL); |
| if(matriz.D != NULL) pasos->D = ListaOrdenParcial(matriz.D, NULL); | if(matriz.D != NULL) pasos->D = ListaOrdenParcial(matriz.D, NULL); |
| } | } |
| Line 647 void CalcularPasosComputacion(parametrom | Line 614 void CalcularPasosComputacion(parametrom |
| /* | /* |
| void CalcularGradoParalelismo(parametromatriz *pasos, parametromatriz *grado) | void CalcularGradoParalelismo(parametromatriz *pasos, parametromatriz *grado) |
| { | { |
| if(matriz.Ddatoexp != NULL) grado->Ddatoexp = 1 / pasos->Ddatoexp; | if(matriz.Ddatoexp != NULL) grado->Ddatoexp = 1 / pasos->Ddatoexp; |
| if(matriz.Ddir_exp != NULL) grado->Ddir_exp = 1 / pasos->Ddir_exp; | if(matriz.Ddir_exp != NULL) grado->Ddir_exp = 1 / pasos->Ddir_exp; |
| if(matriz.Dpilaexp != NULL) grado->Dpilaexp = 1 / pasos->Dpilaexp; | if(matriz.Dpilaexp != NULL) grado->Dpilaexp = 1 / pasos->Dpilaexp; |
| if(matriz.Destadoexp != NULL) grado->Destadoexp = 1 / pasos->Destadoexp; | if(matriz.Destadoexp != NULL) grado->Destadoexp = 1 / pasos->Destadoexp; |
| if(matriz.Ddatoimp != NULL) grado->Ddatoimp = 1 / pasos->Ddatoimp; | if(matriz.Ddatoimp != NULL) grado->Ddatoimp = 1 / pasos->Ddatoimp; |
| if(matriz.Ddir_imp != NULL) grado->Ddir_imp = 1 / pasos->Ddir_imp; | if(matriz.Ddir_imp != NULL) grado->Ddir_imp = 1 / pasos->Ddir_imp; |
| if(matriz.Dpilaimp != NULL) grado->Dpilaimp = 1 / pasos->Dpilaimp; | if(matriz.Dpilaimp != NULL) grado->Dpilaimp = 1 / pasos->Dpilaimp; |
| if(matriz.Destadoimp != NULL) grado->Destadoimp = 1 / pasos->Destadoimp; | if(matriz.Destadoimp != NULL) grado->Destadoimp = 1 / pasos->Destadoimp; |
| if(matriz.ADdatoexp != NULL) grado->ADdatoexp = 1 / pasos->ADdatoexp; | if(matriz.ADdatoexp != NULL) grado->ADdatoexp = 1 / pasos->ADdatoexp; |
| if(matriz.ADdir_exp != NULL) grado->ADdir_exp = 1 / pasos->ADdir_exp; | if(matriz.ADdir_exp != NULL) grado->ADdir_exp = 1 / pasos->ADdir_exp; |
| if(matriz.ADpilaexp != NULL) grado->ADpilaexp = 1 / pasos->ADpilaexp; | if(matriz.ADpilaexp != NULL) grado->ADpilaexp = 1 / pasos->ADpilaexp; |
| if(matriz.ADestadoexp != NULL) grado->ADestadoexp = 1 / pasos->ADestadoexp; | if(matriz.ADestadoexp != NULL) grado->ADestadoexp = 1 / pasos->ADestadoexp; |
| if(matriz.ADdatoimp != NULL) grado->ADdatoimp = 1 / pasos->ADdatoimp; | if(matriz.ADdatoimp != NULL) grado->ADdatoimp = 1 / pasos->ADdatoimp; |
| if(matriz.ADdir_imp != NULL) grado->ADdir_imp = 1 / pasos->ADdir_imp; | if(matriz.ADdir_imp != NULL) grado->ADdir_imp = 1 / pasos->ADdir_imp; |
| if(matriz.ADpilaimp != NULL) grado->ADpilaimp = 1 / pasos->ADpilaimp; | if(matriz.ADpilaimp != NULL) grado->ADpilaimp = 1 / pasos->ADpilaimp; |
| if(matriz.ADestadoimp != NULL) grado->ADestadoimp = 1 / pasos->ADestadoimp; | if(matriz.ADestadoimp != NULL) grado->ADestadoimp = 1 / pasos->ADestadoimp; |
| if(matriz.Sdatoexp != NULL) grado->Sdatoexp = 1 / pasos->Sdatoexp; | if(matriz.Sdatoexp != NULL) grado->Sdatoexp = 1 / pasos->Sdatoexp; |
| if(matriz.Sdir_exp != NULL) grado->Sdir_exp = 1 / pasos->Sdir_exp; | if(matriz.Sdir_exp != NULL) grado->Sdir_exp = 1 / pasos->Sdir_exp; |
| if(matriz.Spilaexp != NULL) grado->Spilaexp = 1 / pasos->Spilaexp; | if(matriz.Spilaexp != NULL) grado->Spilaexp = 1 / pasos->Spilaexp; |
| if(matriz.Sestadoexp != NULL) grado->Sestadoexp = 1 / pasos->Sestadoexp; | if(matriz.Sestadoexp != NULL) grado->Sestadoexp = 1 / pasos->Sestadoexp; |
| if(matriz.Sdatoimp != NULL) grado->Sdatoimp = 1 / pasos->Sdatoimp; | if(matriz.Sdatoimp != NULL) grado->Sdatoimp = 1 / pasos->Sdatoimp; |
| if(matriz.Sdir_imp != NULL) grado->Sdir_imp = 1 / pasos->Sdir_imp; | if(matriz.Sdir_imp != NULL) grado->Sdir_imp = 1 / pasos->Sdir_imp; |
| if(matriz.Spilaimp != NULL) grado->Spilaimp = 1 / pasos->Spilaimp; | if(matriz.Spilaimp != NULL) grado->Spilaimp = 1 / pasos->Spilaimp; |
| if(matriz.Sestadoimp != NULL) grado->Sestadoimp = 1 / pasos->Sestadoimp; | if(matriz.Sestadoimp != NULL) grado->Sestadoimp = 1 / pasos->Sestadoimp; |
| if(matriz.D != NULL) grado->D = 1 / pasos->D; | if(matriz.D != NULL) grado->D = 1 / pasos->D; |
| } | } |
| */ | */ |
| Line 689 void CalcularGradoParalelismo(parametrom | Line 656 void CalcularGradoParalelismo(parametrom |
| void CalcularGradoParalelismoNormalizado(parametromatriz *pasos, parametromatriz *grado) | void CalcularGradoParalelismoNormalizado(parametromatriz *pasos, parametromatriz *grado) |
| { | { |
| unsigned int dim; | unsigned int dim; |
| dim = configuracion.ventana; | dim = configuracion.ventana; |
| if(matriz.Ddatoexp != NULL) grado->Ddatoexp = InversoNormalizado(dim, pasos->Ddatoexp); | if(matriz.Ddatoexp != NULL) grado->Ddatoexp = InversoNormalizado(dim, pasos->Ddatoexp); |
| if(matriz.Ddir_exp != NULL) grado->Ddir_exp = InversoNormalizado(dim, pasos->Ddir_exp); | if(matriz.Ddir_exp != NULL) grado->Ddir_exp = InversoNormalizado(dim, pasos->Ddir_exp); |
| if(matriz.Dpilaexp != NULL) grado->Dpilaexp = InversoNormalizado(dim, pasos->Dpilaexp); | if(matriz.Dpilaexp != NULL) grado->Dpilaexp = InversoNormalizado(dim, pasos->Dpilaexp); |
| if(matriz.Destadoexp != NULL) grado->Destadoexp = InversoNormalizado(dim, pasos->Destadoexp); | if(matriz.Destadoexp != NULL) grado->Destadoexp = InversoNormalizado(dim, pasos->Destadoexp); |
| if(matriz.Ddatoimp != NULL) grado->Ddatoimp = InversoNormalizado(dim, pasos->Ddatoimp); | if(matriz.Ddatoimp != NULL) grado->Ddatoimp = InversoNormalizado(dim, pasos->Ddatoimp); |
| if(matriz.Ddir_imp != NULL) grado->Ddir_imp = InversoNormalizado(dim, pasos->Ddir_imp); | if(matriz.Ddir_imp != NULL) grado->Ddir_imp = InversoNormalizado(dim, pasos->Ddir_imp); |
| if(matriz.Dpilaimp != NULL) grado->Dpilaimp = InversoNormalizado(dim, pasos->Dpilaimp); | if(matriz.Dpilaimp != NULL) grado->Dpilaimp = InversoNormalizado(dim, pasos->Dpilaimp); |
| if(matriz.Destadoimp != NULL) grado->Destadoimp = InversoNormalizado(dim, pasos->Destadoimp); | if(matriz.Destadoimp != NULL) grado->Destadoimp = InversoNormalizado(dim, pasos->Destadoimp); |
| if(matriz.ADdatoexp != NULL) grado->ADdatoexp = InversoNormalizado(dim, pasos->ADdatoexp); | if(matriz.ADdatoexp != NULL) grado->ADdatoexp = InversoNormalizado(dim, pasos->ADdatoexp); |
| if(matriz.ADdir_exp != NULL) grado->ADdir_exp = InversoNormalizado(dim, pasos->ADdir_exp); | if(matriz.ADdir_exp != NULL) grado->ADdir_exp = InversoNormalizado(dim, pasos->ADdir_exp); |
| if(matriz.ADpilaexp != NULL) grado->ADpilaexp = InversoNormalizado(dim, pasos->ADpilaexp); | if(matriz.ADpilaexp != NULL) grado->ADpilaexp = InversoNormalizado(dim, pasos->ADpilaexp); |
| if(matriz.ADestadoexp != NULL) grado->ADestadoexp = InversoNormalizado(dim, pasos->ADestadoexp); | if(matriz.ADestadoexp != NULL) grado->ADestadoexp = InversoNormalizado(dim, pasos->ADestadoexp); |
| if(matriz.ADdatoimp != NULL) grado->ADdatoimp = InversoNormalizado(dim, pasos->ADdatoimp); | if(matriz.ADdatoimp != NULL) grado->ADdatoimp = InversoNormalizado(dim, pasos->ADdatoimp); |
| if(matriz.ADdir_imp != NULL) grado->ADdir_imp = InversoNormalizado(dim, pasos->ADdir_imp); | if(matriz.ADdir_imp != NULL) grado->ADdir_imp = InversoNormalizado(dim, pasos->ADdir_imp); |
| if(matriz.ADpilaimp != NULL) grado->ADpilaimp = InversoNormalizado(dim, pasos->ADpilaimp); | if(matriz.ADpilaimp != NULL) grado->ADpilaimp = InversoNormalizado(dim, pasos->ADpilaimp); |
| if(matriz.ADestadoimp != NULL) grado->ADestadoimp = InversoNormalizado(dim, pasos->ADestadoimp); | if(matriz.ADestadoimp != NULL) grado->ADestadoimp = InversoNormalizado(dim, pasos->ADestadoimp); |
| if(matriz.Sdatoexp != NULL) grado->Sdatoexp = InversoNormalizado(dim, pasos->Sdatoexp); | if(matriz.Sdatoexp != NULL) grado->Sdatoexp = InversoNormalizado(dim, pasos->Sdatoexp); |
| if(matriz.Sdir_exp != NULL) grado->Sdir_exp = InversoNormalizado(dim, pasos->Sdir_exp); | if(matriz.Sdir_exp != NULL) grado->Sdir_exp = InversoNormalizado(dim, pasos->Sdir_exp); |
| if(matriz.Spilaexp != NULL) grado->Spilaexp = InversoNormalizado(dim, pasos->Spilaexp); | if(matriz.Spilaexp != NULL) grado->Spilaexp = InversoNormalizado(dim, pasos->Spilaexp); |
| if(matriz.Sestadoexp != NULL) grado->Sestadoexp = InversoNormalizado(dim, pasos->Sestadoexp); | if(matriz.Sestadoexp != NULL) grado->Sestadoexp = InversoNormalizado(dim, pasos->Sestadoexp); |
| if(matriz.Sdatoimp != NULL) grado->Sdatoimp = InversoNormalizado(dim, pasos->Sdatoimp); | if(matriz.Sdatoimp != NULL) grado->Sdatoimp = InversoNormalizado(dim, pasos->Sdatoimp); |
| if(matriz.Sdir_imp != NULL) grado->Sdir_imp = InversoNormalizado(dim, pasos->Sdir_imp); | if(matriz.Sdir_imp != NULL) grado->Sdir_imp = InversoNormalizado(dim, pasos->Sdir_imp); |
| if(matriz.Spilaimp != NULL) grado->Spilaimp = InversoNormalizado(dim, pasos->Spilaimp); | if(matriz.Spilaimp != NULL) grado->Spilaimp = InversoNormalizado(dim, pasos->Spilaimp); |
| if(matriz.Sestadoimp != NULL) grado->Sestadoimp = InversoNormalizado(dim, pasos->Sestadoimp); | if(matriz.Sestadoimp != NULL) grado->Sestadoimp = InversoNormalizado(dim, pasos->Sestadoimp); |
| if(matriz.D != NULL) grado->D = InversoNormalizado(dim, pasos->D); | if(matriz.D != NULL) grado->D = InversoNormalizado(dim, pasos->D); |
| } | } |
| Line 731 void CalcularGradoParalelismoNormalizado | Line 698 void CalcularGradoParalelismoNormalizado |
| void CalcularAcoplamiento(parametromatriz *acoplamiento) | void CalcularAcoplamiento(parametromatriz *acoplamiento) |
| { | { |
| if(matriz.Ddatoexp != NULL) acoplamiento->Ddatoexp = Acoplamiento(matriz.Ddatoexp); | if(matriz.Ddatoexp != NULL) acoplamiento->Ddatoexp = Acoplamiento(matriz.Ddatoexp); |
| if(matriz.Ddir_exp != NULL) acoplamiento->Ddir_exp = Acoplamiento(matriz.Ddir_exp); | if(matriz.Ddir_exp != NULL) acoplamiento->Ddir_exp = Acoplamiento(matriz.Ddir_exp); |
| if(matriz.Dpilaexp != NULL) acoplamiento->Dpilaexp = Acoplamiento(matriz.Dpilaexp); | if(matriz.Dpilaexp != NULL) acoplamiento->Dpilaexp = Acoplamiento(matriz.Dpilaexp); |
| if(matriz.Destadoexp != NULL) acoplamiento->Destadoexp = Acoplamiento(matriz.Destadoexp); | if(matriz.Destadoexp != NULL) acoplamiento->Destadoexp = Acoplamiento(matriz.Destadoexp); |
| if(matriz.Ddatoimp != NULL) acoplamiento->Ddatoimp = Acoplamiento(matriz.Ddatoimp); | if(matriz.Ddatoimp != NULL) acoplamiento->Ddatoimp = Acoplamiento(matriz.Ddatoimp); |
| if(matriz.Ddir_imp != NULL) acoplamiento->Ddir_imp = Acoplamiento(matriz.Ddir_imp); | if(matriz.Ddir_imp != NULL) acoplamiento->Ddir_imp = Acoplamiento(matriz.Ddir_imp); |
| if(matriz.Dpilaimp != NULL) acoplamiento->Dpilaimp = Acoplamiento(matriz.Dpilaimp); | if(matriz.Dpilaimp != NULL) acoplamiento->Dpilaimp = Acoplamiento(matriz.Dpilaimp); |
| if(matriz.Destadoimp != NULL) acoplamiento->Destadoimp = Acoplamiento(matriz.Destadoimp); | if(matriz.Destadoimp != NULL) acoplamiento->Destadoimp = Acoplamiento(matriz.Destadoimp); |
| if(matriz.ADdatoexp != NULL) acoplamiento->ADdatoexp = Acoplamiento(matriz.ADdatoexp); | if(matriz.ADdatoexp != NULL) acoplamiento->ADdatoexp = Acoplamiento(matriz.ADdatoexp); |
| if(matriz.ADdir_exp != NULL) acoplamiento->ADdir_exp = Acoplamiento(matriz.ADdir_exp); | if(matriz.ADdir_exp != NULL) acoplamiento->ADdir_exp = Acoplamiento(matriz.ADdir_exp); |
| if(matriz.ADpilaexp != NULL) acoplamiento->ADpilaexp = Acoplamiento(matriz.ADpilaexp); | if(matriz.ADpilaexp != NULL) acoplamiento->ADpilaexp = Acoplamiento(matriz.ADpilaexp); |
| if(matriz.ADestadoexp != NULL) acoplamiento->ADestadoexp = Acoplamiento(matriz.ADestadoexp); | if(matriz.ADestadoexp != NULL) acoplamiento->ADestadoexp = Acoplamiento(matriz.ADestadoexp); |
| if(matriz.ADdatoimp != NULL) acoplamiento->ADdatoimp = Acoplamiento(matriz.ADdatoimp); | if(matriz.ADdatoimp != NULL) acoplamiento->ADdatoimp = Acoplamiento(matriz.ADdatoimp); |
| if(matriz.ADdir_imp != NULL) acoplamiento->ADdir_imp = Acoplamiento(matriz.ADdir_imp); | if(matriz.ADdir_imp != NULL) acoplamiento->ADdir_imp = Acoplamiento(matriz.ADdir_imp); |
| if(matriz.ADpilaimp != NULL) acoplamiento->ADpilaimp = Acoplamiento(matriz.ADpilaimp); | if(matriz.ADpilaimp != NULL) acoplamiento->ADpilaimp = Acoplamiento(matriz.ADpilaimp); |
| if(matriz.ADestadoimp != NULL) acoplamiento->ADestadoimp = Acoplamiento(matriz.ADestadoimp); | if(matriz.ADestadoimp != NULL) acoplamiento->ADestadoimp = Acoplamiento(matriz.ADestadoimp); |
| if(matriz.Sdatoexp != NULL) acoplamiento->Sdatoexp = Acoplamiento(matriz.Sdatoexp); | if(matriz.Sdatoexp != NULL) acoplamiento->Sdatoexp = Acoplamiento(matriz.Sdatoexp); |
| if(matriz.Sdir_exp != NULL) acoplamiento->Sdir_exp = Acoplamiento(matriz.Sdir_exp); | if(matriz.Sdir_exp != NULL) acoplamiento->Sdir_exp = Acoplamiento(matriz.Sdir_exp); |
| if(matriz.Spilaexp != NULL) acoplamiento->Spilaexp = Acoplamiento(matriz.Spilaexp); | if(matriz.Spilaexp != NULL) acoplamiento->Spilaexp = Acoplamiento(matriz.Spilaexp); |
| if(matriz.Sestadoexp != NULL) acoplamiento->Sestadoexp = Acoplamiento(matriz.Sestadoexp); | if(matriz.Sestadoexp != NULL) acoplamiento->Sestadoexp = Acoplamiento(matriz.Sestadoexp); |
| if(matriz.Sdatoimp != NULL) acoplamiento->Sdatoimp = Acoplamiento(matriz.Sdatoimp); | if(matriz.Sdatoimp != NULL) acoplamiento->Sdatoimp = Acoplamiento(matriz.Sdatoimp); |
| if(matriz.Sdir_imp != NULL) acoplamiento->Sdir_imp = Acoplamiento(matriz.Sdir_imp); | if(matriz.Sdir_imp != NULL) acoplamiento->Sdir_imp = Acoplamiento(matriz.Sdir_imp); |
| if(matriz.Spilaimp != NULL) acoplamiento->Spilaimp = Acoplamiento(matriz.Spilaimp); | if(matriz.Spilaimp != NULL) acoplamiento->Spilaimp = Acoplamiento(matriz.Spilaimp); |
| if(matriz.Sestadoimp != NULL) acoplamiento->Sestadoimp = Acoplamiento(matriz.Sestadoimp); | if(matriz.Sestadoimp != NULL) acoplamiento->Sestadoimp = Acoplamiento(matriz.Sestadoimp); |
| if(matriz.D != NULL) acoplamiento->D = (double) Acoplamiento(matriz.D); | if(matriz.D != NULL) acoplamiento->D = (double) Acoplamiento(matriz.D); |
| } | } |
| Line 771 void CalcularAcoplamiento(parametromatri | Line 738 void CalcularAcoplamiento(parametromatri |
| void CrearHistogramaPasos() | void CrearHistogramaPasos() |
| { | { |
| char mensaje[MAX_LINE]; | char mensaje[MAX_LINE]; |
| distribucionpasos = calloc(configuracion.ventana+1, sizeof(unsigned long)); | distribucionpasos = calloc(configuracion.ventana+1, sizeof(unsigned long)); |
| if (distribucionpasos == NULL) | if (distribucionpasos == NULL) |
| { | { |
| sprintf(mensaje, "[CrearHistogramaPasos] Memoria insuficiente"); | sprintf(mensaje, "[CrearHistogramaPasos] Memoria insuficiente"); |
| Notificar(mensaje, ERROR_SALIR, ECO_NO); | Notificar(mensaje, ERROR_SALIR, ECO_NO); |
| /* el programa finaliza si no hay memoria suficiente */ | /* el programa finaliza si no hay memoria suficiente */ |
| } | } |
| } | } |
| Line 787 void CrearHistogramaPasos() | Line 754 void CrearHistogramaPasos() |
| void IniciarHistogramaPasos() | void IniciarHistogramaPasos() |
| { | { |
| unsigned int i; | unsigned int i; |
| for(i=0; i<configuracion.ventana; i++) distribucionpasos[i] = 0; | for(i=0; i<configuracion.ventana; i++) distribucionpasos[i] = 0; |
| } | } |
| Line 797 void IniciarHistogramaPasos() | Line 764 void IniciarHistogramaPasos() |
| void LiberarMemoriaHistogramaPasos() | void LiberarMemoriaHistogramaPasos() |
| { | { |
| free(distribucionpasos); | free(distribucionpasos); |
| } | } |
| Line 805 void LiberarMemoriaHistogramaPasos() | Line 772 void LiberarMemoriaHistogramaPasos() |
| void ActualizarHistogramaPasos() | void ActualizarHistogramaPasos() |
| { | { |
| distribucionpasos[(unsigned int)pasos->D]++; | distribucionpasos[(unsigned int)pasos->D]++; |
| } | } |