|
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
« 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: <?xml version="1.0" encoding="UTF-8"?> <graphml> <graph> <node id="sevilla"/> <edge source="sevilla" target="huelva"/> <edge source="sevilla" target="cadiz"/> <edge source="sevilla" target="rosal de la frontera"/> <node id="cadiz"/> <edge source="cadiz" target="medina sidonia"/> <node id="huelva"/> <edge source="huelva" target="rosal de la frontera"/> <node id="medina sidonia"/> <node id="rosal de la frontera"/> </graph> </graphml>
Y el fichero de xsl contiene lo siguiente <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> <xsl:variable name="ciudad" select="'cadiz'"/> <xsl:output method="xml"/> <xsl:template match="/graphml"> <graphml> <graph> <xsl:if test="graph/egde/@source = $ciudad"> <xsl:copy-of select="graph/edge"/> </xsl:if> </graph> </graphml> </xsl:template> </xsl:stylesheet>
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 <?xml version="1.0" encoding="UTF-8"?> <graphml> <graph> <edge source="cadiz" target="medina sidonia"/> </graph> </graphml>
Gracias, un saludo
2
« 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 while(i<100) { //... cout << "Iteración: " << i << endl; i++; }
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
« 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: #include <cstdio> #include <fstream> #include <iostream> #include <cstdlib> #include "CDuracion.cpp" #include <Windows.h> #include <time.h> using namespace std; int main(void) { double valor= 0.0,valor2 = 0.0; valor = getTickCount(); for(int i=0;i<100000;i++) cout << "yyprum "; valor2 = GetTickCount(); return 0; }
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
« 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: int crearRed(){ //Variables ... //Etiqueta menu_crear: { //operaciones... while(...) { //operaciones if (...) { //... } if (...) { //... } else { //... } } //... while(...) { //... if (...) goto menu_crear; } //... if (...) { //... for (...) { //... while(...) { //... } } } //... while(strcmp(nombre, "")==0) { //... } //... if (...) { //... } return tratarRed(red, nombre); } }
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
« 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
6
« 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
« en: Sábado 20 de Junio de 2009, 18:24 »
Vamos a ver. He escrito lo siguiente if(getchar() == (char) 10) { cout << "Es un ENTER" << endl; } else if(getchar() == -1) { cout << "Es un -1" << endl; } else { cout << "Es otro caracter" << endl; }
Y por fin el ENTER ya me lo reconoce. Muchas gracias. Pero, ¿que hago con el -1?
8
« en: Sábado 20 de Junio de 2009, 17:49 »
Sigo sin poderlo conseguir. He hecho la siguiente prueba char cont; scanf("%c",&cont); if(cont == (char)13) cout << "Es un ENTER" << endl; else cout << "Es un -1" << endl;
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
« 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
« en: Sábado 20 de Junio de 2009, 13:20 »
OK. Muchas gracias
11
« en: Martes 16 de Junio de 2009, 14:58 »
Hola: Tengo un trozo de código en el que utilizo la función open. ifstream entrada; entrada.open("red.txt");
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
« 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
« 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: char s1[5] = "abcd"; char s2[5] = "efgh"; char *a; a = append(s1,s2); cout << a << endl; char* append(char *cadena1,char *cadena2) { int size=0,size1=0,i=0; //Obtengo lo que mediría la nueva cadena while(cadena1[i]!=' ') { size1++; i++; } i=0; while(cadena2[i]!=' ') { size++; i++; } size += size1; //creo el nuevo array char *res = new char[size]; //lo inicializo for(int i=0;i<size1;i++) res[i] = cadena1[i]; for(int i=size1;i<size;i++) res[i] = cadena2[i-size1]; return res; }
¿Alguien puede decirme por qué pasa? Un saludo
14
« en: Jueves 21 de Mayo de 2009, 11:45 »
OK. Muchas gracias
15
« 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
« 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
« 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
« 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
« 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
« 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
« en: Sábado 16 de Mayo de 2009, 20:02 »
Muchas gracias. Llevaba atascado bastante en esto
Un saludo
22
« 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
« 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]
|
|
|