• Domingo 28 de Abril de 2024, 20:56

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - cremix

Páginas: [1]
1
XSL / Código XSL no me devuelve nada
« en: Jueves 25 de Noviembre de 2010, 19:47 »
Hola:

Estoy empezando con el xsl y estoy atascado en un punto y no condigo dar con una solución, qué además seguro que es una cosas muy tonta.
El fichero de entrada xml contiene lo siguiente:

Código: XML
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <graphml>
  3.     <graph>
  4.         <node id="sevilla"/>
  5.         <edge source="sevilla" target="huelva"/>
  6.         <edge source="sevilla" target="cadiz"/>
  7.         <edge source="sevilla" target="rosal de la frontera"/>
  8.         <node id="cadiz"/>
  9.         <edge source="cadiz" target="medina sidonia"/>
  10.         <node id="huelva"/>
  11.         <edge source="huelva" target="rosal de la frontera"/>
  12.         <node id="medina sidonia"/>
  13.         <node id="rosal de la frontera"/>
  14.     </graph>
  15. </graphml>
  16.  

Y el fichero de xsl contiene lo siguiente

Código: Text
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet
  3. version="1.0"
  4. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  5. xmlns="http://www.w3.org/1999/xhtml">
  6.  
  7. <xsl:variable name="ciudad" select="'cadiz'"/>
  8.  
  9. <xsl:output method="xml"/>
  10.  
  11. <xsl:template match="/graphml">
  12.     <graphml>
  13.         <graph>
  14.             <xsl:if test="graph/egde/@source = $ciudad">
  15.                 <xsl:copy-of select="graph/edge"/>
  16.             </xsl:if>
  17.         </graph>
  18.     </graphml>
  19. </xsl:template>
  20. </xsl:stylesheet>
  21.  
  22.  

Yo quiero que me salgan los edge cuyo atributo source sea el mismo que la variable ciudad que he declarado pero el programa no me devuelve nada. En este caso yo quiero que me devuelva
Código: XML
  1.  
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <graphml>
  4. <graph>
  5. <edge source="cadiz" target="medina sidonia"/>
  6. </graph>
  7. </graphml>
  8.  

Gracias, un saludo

2
Visual C++ / Re: funcion getTickCount()
« en: Martes 23 de Junio de 2009, 20:08 »
Muchas gracias de nuevo. Oye, ¿sabes como se reimprime una valor en pantalla? Quiero decir. Imaginate que tengo un bucle
Código: C++
  1.  
  2. while(i<100)
  3. {
  4.   //...
  5.  
  6.  cout << "Iteración: " << i  << endl;
  7.  i++;
  8. }
  9.  

Pero por pantalla no quiero que me aparezca 100 veces "iteración i". Quiero que la linea siempre se modifique. ¿Sabes lo que quiero decir?

EI: juntando mensajes.

Hola:

Ya lo he descubierto. Hay que añadir un r. ;)

3
Visual C++ / funcion getTickCount()
« en: Martes 23 de Junio de 2009, 13:18 »
Hola:

Tengo un programa que tarda en realizar calculos durante varios minutos. Es normal, eso no es lo que me importa. Lo que estoy intentando medir es el tiempo de ejecución del programa. Habia encontrado una solucion por Internet pero como mi programa tardaba varios minutos el contador se desbordaba. Entonces encontre la funcion getTickCount (http://msdn.microsoft.com/en-us/library/ms724408(VS.85).aspx). La he usado de este modo, con un codigo de prueba:

Código: C++
  1. #include <cstdio>
  2. #include <fstream>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include "CDuracion.cpp"
  6. #include <Windows.h>
  7. #include <time.h>
  8.  
  9. using namespace std;
  10.  
  11. int main(void)
  12. {
  13.    
  14.     double valor= 0.0,valor2 = 0.0;
  15.  
  16.     valor = getTickCount();
  17.     for(int i=0;i<100000;i++)
  18.         cout << "yyprum ";
  19.    
  20.     valor2 = GetTickCount();
  21.  
  22.     return 0;
  23. }
  24.  

Pero me da el siguiente error al compilar: error C3861: 'getTickCount': no se encontró el identificador.
Si he incluido la biblioteca y la funcion es así, ¿qué es lo que está pasando?

4
Visual C++ / funcion goto
« en: Domingo 21 de Junio de 2009, 21:07 »
Hola:

Estoy usando la función GOTO pero al ejecutar el programa me da el siguiente fallo. Sale en una ventana

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++   
+   Microsoft Visual C++ Debug Library                                             +
+                                                                                                   +
+   Debug Erro2!                                                                             +
+                                                                                                   +
+   Program: L:IA2_RNNeuralNetworkDebugNeuralNetwork.exe     +
+                                                                                                   +
+   Invalid allocation size: 4294967295 bytes                                    +
+                                                                                                   +
+   (Press retry to debug the application)                                         +
+                                                                                                   +
+   [Anular]   [Reintentar]   [Omitir]                                            +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

El codigo que me da error es el siguiente:

Código: C++
  1. int crearRed(){
  2.    
  3. //Variables ...
  4.  
  5.    
  6. //Etiqueta
  7. menu_crear:
  8. {
  9.     //operaciones...
  10.  
  11.     while(...)
  12.     {   
  13.        //operaciones
  14.         if (...)
  15.         {
  16.             //...
  17.         }
  18.         if (...)
  19.         {
  20.             //...
  21.         }
  22.         else
  23.         {
  24.             //...
  25.         }
  26.        
  27.     }
  28.    
  29.    
  30.    //...
  31.  
  32.     while(...)
  33.     {
  34.         //...
  35.  
  36.         if (...) goto menu_crear;
  37.     }
  38.  
  39.  
  40.     //...
  41.  
  42.    
  43.     if (...)
  44.     {
  45.         //...
  46.         for (...)
  47.         {
  48.             //...
  49.             while(...)
  50.             {
  51.                 //...
  52.             }
  53.         }
  54.     }
  55.  
  56.     //...
  57.     while(strcmp(nombre, "")==0)
  58.     {
  59.         //...
  60.     }
  61.  
  62.    //...
  63.  
  64.     if (...)
  65.     {
  66.         //...
  67.     }
  68.     return tratarRed(red, nombre); 
  69.    
  70. }
  71. }
  72.  

Todo funcionaba perfectamente hasta que le puse el GOTO. Por eso he omitido el código dentro de los bucles y demás. ¿Alguien sabe por qué me da ese fallo?

5
Visual C++ / Re: Caracter Enter y -1
« en: Sábado 20 de Junio de 2009, 19:02 »
Lo acabo de probar y me viene perfectamente. Muchísimas gracias. Además así también puedo saber si lo que has escrito no es ni un n o un -1. Gracias  :beer:   :D

6
Visual C++ / Re: Caracter Enter y -1
« en: Sábado 20 de Junio de 2009, 18:33 »
Mi codigo, no la prueba de antes, sino el del programa que estoy haciendo, tiene dos opciones:
opción 1: Introducir un ENTER para ir al menu siguiente.
opción 2: Introdcuir un -1 para volver al menú anterior

¿Es esto lo que querías saber?

7
Visual C++ / Re: Caracter Enter y -1
« en: Sábado 20 de Junio de 2009, 18:24 »
Vamos a ver. He escrito lo siguiente

Código: C++
  1. if(getchar() == (char) 10)
  2.  {
  3.   cout << "Es un ENTER" << endl;
  4.  }
  5.  else if(getchar() == -1)
  6.  {
  7.    cout << "Es un -1" << endl;
  8.  }
  9.  else
  10.  {
  11.      cout << "Es otro caracter" << endl;
  12.  }
  13.  

Y por fin el ENTER ya me lo reconoce. Muchas gracias. Pero, ¿que hago con el -1?

8
Visual C++ / Re: Caracter Enter y -1
« en: Sábado 20 de Junio de 2009, 17:49 »
Sigo sin poderlo conseguir.

He hecho la siguiente prueba

Código: C++
  1.  
  2. char cont;
  3.  
  4. scanf("%c",&cont);
  5.  
  6. if(cont == (char)13)
  7.   cout << "Es un ENTER" << endl;
  8. else
  9.   cout << "Es un -1" << endl;
  10.  

Sigo sin saber como hacer el scanf para que pueda leer un -1 o un Enter y poder diferenciarlos. Por cierto, si ejecuto el codigo anterior, al introducir un ENTER, me sale la respuesta del else en vez de la del if.

9
Visual C++ / Caracter Enter y -1
« en: Sábado 20 de Junio de 2009, 13:22 »
Hola:

Estoy haciendo un programita en el que si introduces un -1 vas a un menu y si introduces Enter vas a otro. Sé que el Enter es el 13 pero ¿cómo puedo comparar un caracter con un entero?

10
Visual C++ / Re: función open
« en: Sábado 20 de Junio de 2009, 13:20 »
OK. Muchas gracias ;)

11
Visual C++ / función open
« en: Martes 16 de Junio de 2009, 14:58 »
Hola:

Tengo un trozo de código en el que utilizo la función open.

Código: C++
  1.  ifstream entrada;
  2. entrada.open("red.txt");
  3.  

El problema que tengo es que si quiero abrir un fichero que no esté en el mismo directorio del programa, por ejemplo C:carpetared.txt. Entonces no me abre el fichero. ¿Esto se puede cambiar?

Un saludo

12
C/C++ / Re: Arrays con basura
« en: Sábado 13 de Junio de 2009, 16:26 »
Era eso. Tenía que ponerle el ''. Menudo despiste. Muchísimas gracias.
Un saludo

13
C/C++ / Arrays con basura
« en: Sábado 13 de Junio de 2009, 13:02 »
Hola:

No sé porqué razón defino los arrays con un tamaño determinado y cuando los imprimo por pantalla me salen con basura. Estoy haciendo una función llamada append que me una cadenas (por cierto, ¿sabéis si ya existe una?). Aquí os enseño el código:

Código: C++
  1.  
  2. char s1[5] = "abcd";
  3. char s2[5] = "efgh";
  4.  
  5. char *a;
  6.  
  7. a = append(s1,s2);
  8. cout << a << endl;
  9.  
  10.  
  11. char* append(char *cadena1,char *cadena2)
  12. {
  13.     int size=0,size1=0,i=0;
  14.  
  15.         //Obtengo lo que mediría la nueva cadena
  16.     while(cadena1[i]!='')
  17.     {
  18.         size1++;
  19.         i++;
  20.     }
  21.    
  22.     i=0;
  23.  
  24.     while(cadena2[i]!='')
  25.     {
  26.         size++;
  27.         i++;
  28.     }
  29.  
  30.     size += size1;
  31.  
  32.        //creo el nuevo array
  33.     char *res = new char[size];
  34.         //lo inicializo
  35.     for(int i=0;i<size1;i++)
  36.         res[i] = cadena1[i];
  37.    
  38.  
  39.     for(int i=size1;i<size;i++)
  40.         res[i] = cadena2[i-size1];
  41.  
  42.     return res;
  43. }
  44.  
  45.  
  46.  

¿Alguien puede decirme por qué pasa?

Un saludo

14
Visual C++ / Re: Tamaño de un puntero pasado por parámetro
« en: Jueves 21 de Mayo de 2009, 11:45 »
OK. Muchas gracias

15
Visual C++ / Fallo en memoria
« en: Jueves 21 de Mayo de 2009, 10:51 »
Hola:

Mi problema es el siguiente. Tengo dos clases: Red y Nodo. En la clase red hay un triple puntero:

"Red.cpp"

protected:
  Nodo*** capas;//Es una matriz de punteros del tipo objeto Nodo


Ahora, en la misma clase, declaro las siguientes funciones:

Nodo***  Red::getCapas()
{
          return capas;
}

Nodo* Red::getNodo(int capa, int nodo)
{
       return capas[capa][nodo];
}


Y si me voy al MAIN y realizo, por ejemplo, lo siguiente:

Red* red = new Red(...);//creo Red

red->getCapas[j][k]->print_atributoDeNodo();//j y k son unos valores cualesquiera. El print es una función de la clase Nodo

Me compila correctamente pero al ejecutar el programa se me interrumpe la ejecución diciéndome:

Excepción no controlada en 0x00411fa1 en NeuralNetwork.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0xcdcdcddd. Con las opciones de Interrumpir o Continuar.

En Resultados me sale lo siguiente:

'NeuralNetwork.exe': se cargó 'C:Documents and SettingspracticaEscritorioIA2_RNNeuralNetworkDebugNeuralNetwork.exe', Símbolos cargados.
'NeuralNetwork.exe': se cargó 'C:WINDOWSsystem32ntdll.dll'
'NeuralNetwork.exe': se cargó 'C:WINDOWSsystem32kernel32.dll'
'NeuralNetwork.exe': se cargó 'C:WINDOWSWinSxSx86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456msvcp90d.dll', Símbolos cargados.
'NeuralNetwork.exe': se cargó 'C:WINDOWSWinSxSx86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456msvcr90d.dll', Símbolos cargados.
Primera excepción en 0x00411fa1 en NeuralNetwork.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0xcdcdcddd.
Excepción no controlada en 0x00411fa1 en NeuralNetwork.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0xcdcdcddd.


Y si me voy al código de la función print por ejemplo ésta:

                                         void Nodo::print_delta()
                                        {

       ====>                               cout << "Delta del nodo: " << delta << endl;
                                        }


Me aparece esa flecha en amarillo.

¿Alguien sabe que es lo qué pasa? Si creo un Nodo normal, llamar a sus funciones no es ningún problema. Pero crear las funciones de acceso a un objeto de tipo Red, usarlas y acceder a los Nodos es todo un problema.

Un saludo

16
Visual C++ / Tamaño de un puntero pasado por parámetro
« en: Lunes 18 de Mayo de 2009, 18:12 »
Hola:

Si tengo esta función, por ejemplo:

int sumatorio(int* vector){...}

Como a la función le paso un array en forma de puntero ¿Cómo puedo calcular, en el cuerpo de esa función, el tamaño de vector?

No puedo hacerlo con sizeof porque entonces me dice, lógicamente, que el array tiene tamaño uno. ¿Hay algún modo de hacerlo?

un saludo

17
Visual C++ / Re: No me deja crear un array de arrays de objetos
« en: Lunes 18 de Mayo de 2009, 17:08 »
Ya lo he solucionado. No lo entiendo muy bien, o mejor, no lo visualizo mentalmente muy bien pero sé que tiene que ser así. El código me compila y me da lo que qquiero.

Un saludo

18
Visual C++ / No me deja crear un array de arrays de objetos
« en: Lunes 18 de Mayo de 2009, 16:04 »
Hola:

Necesito ayuda con una cosa del código que no sale ni para atrás. Estoy intentando crear un array de arrays de objetos. Los objetos son de tipo Nodo(creado por mi). En un primer momento he escrito lo siguiente:

"Red.h"

public:
   Nodo** capas;
   Nodo* nodos;
   Red(void);
   Red(int *num_nodos);
   ~Red(void);
};

"Red.cpp"

Red::Red(int *num_nodos) //esto es un array de enteros
{
       int k_capas = sizeof(num_nodos)/sizeof(num_nodos[0]);

   capas = new Nodo* [k_capas];
   
   for(int i=0;i<k_capas;i++)
   {
      capas = new Nodo[num_nodos];
   }
   
}

Pero luego resulta que no puedo hacer red->capas[0][0]. Se supone que el array capas debería de tener el tamaño del vector num_nodos y que además, cada posición de capas ha de apuntar a otro array de tamaño num_nodos. Pero lo que me sale es que capas tiene tamaño 1 y que ademas no es un array de Nodos, sino que directamente es un objeto de tipo Nodo.

¿Alguien sabe como puedo hacer ese array de arrays de objetos de tipo Nodo?

+-----++++++++++---------+---------+---------+---------+---------+
+  -------------->+ Nodo0 + Nodo1 + Nodo2 +    .....     +  NodoN +++++array 0
+-----++++++++++---------+---------+---------+---------+---------+
+ ... +
+-----++++++++++---------+---------+---------+---------+---------+
+  -------------->+ Nodo0 + Nodo1 + Nodo2 +    .....     +  NodoN +++++array M
+-----++++++++++---------+---------+---------+---------+---------+


Muchas gracias

19
Visual C++ / Re: Destruir un objeto
« en: Domingo 17 de Mayo de 2009, 19:04 »
Hola:

Al final lo he solucionado así:

Nodo* node = new Nodo(10,6.0);

node->print_salida();
node->print_pesos();

Muchas gracias de todos modos. Aunque ahora tengo otra cuestión. Si no implemento el destructor, si lo dejo vacío, ¿sigue destruyéndose todo el objeto? Es decir, silo dejo así

Nodo::~Nodo(){ };

Y segundo ¿por qué no puedo llamar ahora a las funciones así?

node.print_salida();
node.print_pesos();

Un saludo y gracias

20
Visual C++ / Destruir un objeto
« en: Domingo 17 de Mayo de 2009, 18:47 »
Hola:

Estoy intentado aprender a destruir objetos y por lo visto veo que hay que crear un puntero al objeto que cree y luego eliminarlo desde el objeto. Creo que he hecho eso pero aún asi el código no me copila. ¿Sabe alguien por qué?

Nodo.h
class Nodo{

protected:
   float salida;
   int size_pesos;
   float* pesos;
   
public:
   
   Nodo(int in_size_pesos, float in_salida);
   ~Nodo();
   void print_pesos();
   void print_salida();

};

Nodo.cpp

(...)

Nodo::Nodo(int in_size_pesos, float in_salida)
{
   size_pesos = in_size_pesos;

   salida = in_salida;

   pesos = new float[in_size_pesos];
   
   for(int i=0;i<size_pesos;i++)
      pesos = static_cast<float> (i*0.1);
}

Nodo::~Nodo()
{
   delete[] pesos;
}

(...)


EntryPoint.cpp

int main()
{
   Nodo node(10,6.0);
   Nodo* ptrNodo = new(Nodo)
   Nodo* p1 = &node; //Me da el fallo aquí

   node.print_salida();
   node.print_pesos();
   delete ptrNodo;
 
        (...)
}

Por cierto, ¿el destructor está bien así? Los atributos que no seas arrays o punteros ¿cómo los elimino?

Muchas gracias

21
Visual C++ / Re: Fallo con un puntero
« en: Sábado 16 de Mayo de 2009, 20:02 »
Muchas gracias. Llevaba atascado bastante en esto

Un saludo

22
Visual C++ / Re: Fallo con un puntero
« en: Sábado 16 de Mayo de 2009, 19:46 »
Vamos a ver. Lo que quiero hacer es crear un objeto llamado Nodo. Entre sus atributos necesito que haya un array. El problema es que de primeras no puedo darle un valor fijo porque cada Nodo tendrá un array con un tamaño diferente. Por esa razón le paso como atributo un puntero de tipo float. Lo que quiero es que al llamar al constructor, yo pueda crear en memoria un array del tamaño que yo deseé. EN el código le daba esos valores para ver si funcionaba el asunto. Lo que pasa es que no me acabo de aclarar con el tema de punteros. El fallo está en que hago que el puntero apunte aun variable loca ¿verdad? ¿Cómo puedo conseguir lo que quiero?

Muchas gracias

un saludo

23
Visual C++ / Fallo con un puntero
« en: Sábado 16 de Mayo de 2009, 18:49 »
Hola:

Uso el visual C++ y el código me da el siguiente erro

Unhandled exception at 0x004114fa in NeuralNetwork.exe: 0xC0000005: Access violation writing location 0x00000000.

He visto en otros foros (incluido en este) que el fallo está en un puntero, tal y como me indica también el programa. Mi duda es que no sé cómo solucionarlo, qué escribir. Mi archivo *.h es este :

#pragma once

class Nodo{

protected:
   float salida;
   int size_pesos;
   float* pesos;
//Este es el puntero que luego me dará el error
public:
   Nodo(int in_size_pesos, float in_salida);
   void print_pesos();
   void print_salida();

};


Éste es el método constructor, donde me salta el error:

Nodo::Nodo(int in_size_pesos, float in_salida)
{
   size_pesos = in_size_pesos;
   
   salida = in_salida;
   
   for(int i=0;i<size_pesos;i++)
   {

      (*pesos) =  static_cast<float> (i);//Y aquí el fallo
      (*pesos++);
   }
   pesos = pesos - size_pesos;*/
   
}


¿Cómo lo soluciono?
Muchas gracias

un saludo

PD: el fallo me salta con y sin el casting

Páginas: [1]