elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Programación C/C++ / Es posible usar ( como expresion regular? c++ <regex> en: 2 Febrero 2019, 14:24 pm
Buenas chicos estoy leyendo un gran documento donde debo sacar los nombres y calves (es un ejercicio, nada malo).

Lo que pasa que los nombres si los consigo sacar con
Código:
regex e("\\b(name )([^ ]*)");
ya que vienen detras de un name, pero las calve no al estar entre parentesis

Si uso
Código:
regex p("\\b(()([^ ]*)");
me salta error en la memoria

Ejemplo del documento:

name Turing
key (31)

ese 31 no consigo cogerlo.

Un saludo
12  Programación / Programación C/C++ / Leer fichero .vhdl en c++ en: 1 Febrero 2019, 12:39 pm
Buenas llevo un tiempo buscando alguna biblioteca o forma de parsear un fichero .vhdl en c++.
Por ejemplo si tengo este simple codigo

Código:
Library IEEE; 
use IEEE.std_logic_1164.all;
 
entity EXAMPLE is
  port ( A : in std_logic_vector (31 downto 0);  
       B : in fixed_std (6 downto 0);
       C: in natural;
       D: out natural; );
end EXAMPLE;

me interesaria sacar el tipo de cada señal y su tamaño, por ejemplo A es un std_logic_vector y su tamaño es 32.
Estoy buscando alguna forma de hacerlo que no sea a "pelo" ya que creo que debe haber alguna, pero no la encuentra.

Alguno ha realizado algo similar o saben por donde van los tiros?

Tampoco es un casteo, unicamente quiero sacar esos 2 datos.

Un saludo.
13  Programación / Programación C/C++ / Re: tinyXML c++ en: 1 Febrero 2019, 11:27 am
Saludos,

- Si te fijas lo has estado haciendo bien, Sibling es Hermano o Campañero, pRoot no tiene ningún hermano o compañero, esto lo tienes que hacer sobre pBodys tal como lo vienes haciendo con pParm = pParms->FirstChildElement("Input");

- Usa: pBodys = pBodys->NextSiblingElement("Test");

- También corrige: (int)count->Attribute("cont") en tu FOR, esto devuelve un Puntero y lo que conviertes a INT es el Puntero, no el valor. Mejor usa: count->IntAttribute("cont") en su lugar:

Código
  1. #include <iostream>
  2. #include "tinyxml2.cpp"
  3. #include "tinyxml2.h"
  4.  
  5. using namespace std;
  6. using namespace tinyxml2;
  7.  
  8. int main() {
  9.  XMLDocument doc;
  10.  doc.LoadFile("example.xml");
  11.  XMLElement *pRoot, *pBodys, *pParms, *pParms2, *pProcess, *pApp, *pLineFormat, *pParm, *pParm2, *count;
  12.  pRoot = doc.FirstChildElement("Tests");
  13.  if (pRoot) {
  14.    count = pRoot->FirstChildElement("count");
  15.    cout << "cont = " << count->Attribute("cont") << endl;
  16.    pBodys = pRoot->FirstChildElement("Test");
  17.  
  18.    for (int i = 0; i < count->IntAttribute("cont"); i++) {
  19.      cout << "id = " << pBodys->Attribute("id") << endl;
  20.      if (pBodys) {
  21.        pParms = pBodys->FirstChildElement("Inputs");
  22.        if (pParms) {
  23.          pParm = pParms->FirstChildElement("Input");
  24.          while (pParm) {
  25.            cout << "port = " << pParm->Attribute("port") << " ";
  26.            cout << "value = " << pParm->Attribute("value") << endl;
  27.            pParm = pParm->NextSiblingElement("Input");
  28.          }
  29.        }
  30.        pParms2 = pBodys->FirstChildElement("Outputs");
  31.        if (pParms2) {
  32.          pParm2 = pParms2->FirstChildElement("Output");
  33.          while (pParm2) {
  34.            cout << "port = " << pParm2->Attribute("port") << " ";
  35.            cout << "value = " << pParm2->Attribute("value") << endl;
  36.            pParm2 = pParm2->NextSiblingElement("Output");
  37.          }
  38.        }
  39.      }
  40.      pBodys = pBodys->NextSiblingElement("Test");
  41.    }
  42.  }
  43.  
  44.  return 0;
  45. }

Código
  1. <Tests>
  2.  <count cont="2"></count>
  3.  <Test id="test0">
  4.    <Inputs>
  5.      <Input port="A" value="1" />
  6.      <Input port="B" value="4.56" />
  7.      <Input port="C" value="7" />        
  8.    </Inputs>
  9.    <Outputs>
  10.      <Output port="D" value="10" />      
  11.    </Outputs>
  12.  </Test>
  13.  <Test id="test1">
  14.    <Inputs>
  15.      <Input port="K" value="3" />
  16.      <Input port="L" value="9.56" />
  17.    </Inputs>
  18.    <Outputs>
  19.      <Output port="P" value="6" />      
  20.    </Outputs>
  21.  </Test>
  22. </Tests>

Código
  1. C:\Users\EdSon\Desktop>g++ xmlreader.cpp -o xmlreader.exe && xmlreader.exe
  2. cont = 2
  3. id = test0
  4. port = A value = 1
  5. port = B value = 4.56
  6. port = C value = 7
  7. port = D value = 10
  8. id = test1
  9. port = K value = 3
  10. port = L value = 9.56
  11. port = P value = 6
  12.  
  13. C:\Users\EdSon\Desktop>

- Documentación TinyXML-2: http://leethomason.github.io/tinyxml2/classtinyxml2_1_1_x_m_l_element.html

muchisimas gracias me sirivio!!
Un saludo.
14  Programación / Programación C/C++ / Re: Funcion que devuelva un array en: 1 Febrero 2019, 11:20 am
Saludos,

- Yo suelo solicitar al usuario el tamaño del array y crearlo en vivo:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  int cantidad;
  5.  printf("Indique la cantidad de elementos del Array: ");
  6.  scanf("%d", &cantidad);
  7.  int array[cantidad];
  8.  for (int i = 0; i < cantidad; i++) {
  9.    array[i] = i;
  10.  }
  11.  for (int i = 0; i < cantidad; i++) {
  12.    printf("%d\n", array[i]);
  13.  }
  14.  return 0;
  15. }

- Sin embargo he estado leyendo varios libros de programación en C y veo que casi ninguno habla de lo que hago. Es bastante sencillo utilizar el método que expongo, pero por lo que he leído, esto no es Estándar y muchos compiladores darán error.

-- Yo uso MinGW (gcc, g++, 6.3.0) y nunca me ha dado problemas al respecto así que ni enterado.

- La mayoría de los libros solo hablan de Arrays estáticos (int array[5], #define SIZE 5; int array[SIZE], int array[] = {1, 2, 3, 4, 5}), luego pasan directamente a Arrays dinámicos con punteros y malloc, free y NULL.

- Recomiendo este libro gratuito en español que justo trato el tema: Vectores Estáticos (pág. 63), Memoria Dinámica (pág. 213):
https://openlibra.com/es/book/introduccion-a-la-programacion-con-c-3

-- Y este par más que son bastante prácticos con varios ejemplos con malloc y free:
https://openlibra.com/es/book/fundamentos-de-programacion-en-c
https://openlibra.com/es/book/apuntes-de-la-materia-de-programacion-basica

Buenas gracias por responder, en mi caso no podria meterlo por teclado o pedirselo al usuario, ya que el tamaño viene indicado en un fichero por tanto hay que leerlo.

voy a intentar hacerlo con un array dinamico con puntero, o como solucion al sucia pero valida  leere el tamaño del array en el main, creo el array y luego llamare a la funcion pasandole el descriptor del fichero junto con el array.

un saludo.
15  Programación / Programación C/C++ / Re: alguien porfavor me podria ayudar con este ejercicio en c++ porfavor porfavor c+ en: 1 Febrero 2019, 11:16 am
ejercicio sencillo, con un struct por cada cliente, y el resto son operaciones.

si tienes alguna duda especifica comentanos
16  Programación / Programación C/C++ / Funcion que devuelva un array en: 31 Enero 2019, 19:25 pm
Buenas, es posible que llamando a una función desde el main(por ejemplo u otra) te devuelva un array??

Se que es posible, ya que tu al llamar a la funcion le pasas el array y te rellena los datos.

La cosa viene cuando el tamaño de dicho array no lo sabes hasta que llamas a esa función , entonces como puedes pasarle un array sin saber su tamaño? tampoco podrías igualar dicho array al array que te devuelve la función por que no sabes el tamaño.


Como podria crear un array vacio o un array de tamaño dinamico?


Un saludo.
17  Programación / Programación C/C++ / tinyXML c++ en: 31 Enero 2019, 12:40 pm
Quiero leer un archivo xml donde se encuentran varias pruebas, pero siempre obtengo la primera y no sale del bucle. Si hago una iteración bien, pero cuando hago el bucle, no puedo pasar a la siguiente prueba.

Y si uso // pBodys = pRoot-> NextSiblingElement ("Test"); saltA un error en la iteración 2, (https://i.gyazo.com/9a108bf422299b66abfe91127668a63c.png) si no lo uso, permanece en un bucle infinito

(https://i.gyazo.com/133be25514a8a000fce87e2fc7cc52ad.png)

No puedo seguir adelante.  un saludo

    int main()
    {
        XMLDocument doc;
        doc.LoadFile("example.xml");
        XMLElement *pRoot, *pBodys, *pParms, *pParms2, *pProcess, *pApp, *pLineFormat, *pParm, *pParm2, *count;
        pRoot = doc.FirstChildElement("Tests");
        if (pRoot)
        {
            count = pRoot->FirstChildElement("count");
            std::cout << "cont=" << count->Attribute("cont") << std::endl;
            pBodys = pRoot->FirstChildElement("Test");
            //for (int i = 0; i < (int)count->Attribute("cont"); i++) {


            std::cout << "id=" << pBodys->Attribute("id") << std::endl;
            if (pBodys) {
                pParms = pBodys->FirstChildElement("Inputs");
                if (pParms)
                {
                    pParm = pParms->FirstChildElement("Input");
                    while (pParm) {

                        std::cout << "port=" << pParm->Attribute("port") << " ";
                        std::cout << "value=" << pParm->Attribute("value") << std::endl;


                        pParm = pParm->NextSiblingElement("Input");
                    }
                }
                pParms2 = pBodys->FirstChildElement("Outputs");
                if (pParms2)
                {
                    pParm2 = pParms2->FirstChildElement("Output");
                    while (pParm2) {

                        std::cout << "port=" << pParm2->Attribute("port") << " ";
                        std::cout << "value=" << pParm2->Attribute("value") << std::endl;


                        pParm2 = pParm2->NextSiblingElement("Output");
                    }
                }



            }

            //pBodys = pRoot->NextSiblingElement("Test");
        //}
    }

    return 0;
}

DOC example.xml
<Tests>
    <count cont="2"></count>
    <Test id="test0">
        <Inputs>
            <Input port="A" value="1" />
            <Input port="B" value="4.56" />
            <Input port="C" value="7" />       
        </Inputs>
        <Outputs>
            <Output port="D" value="10" />     
        </Outputs>
    </Test>

    <Test id="test1">
        <Inputs>
            <Input port="K" value="3" />
            <Input port="L" value="9.56" />
        </Inputs>
        <Outputs>
            <Output port="P" value="6" />       
        </Outputs>
    </Test>
</Tests>
18  Programación / Programación C/C++ / Re: Leer fichero XML desde C++ en: 31 Enero 2019, 10:41 am
Claro al pincipio leia el fichero y cada vez que detectava una variable global T que era <Test> pues identificaba el primer test, y asi con todas las etiquetas.
Pero queda muy feo, y debo usar una libreria que parsee xml detectando automaticamente la etiquetas, ya que este trabajo tengo q entregarlo y exponerlo

estoy intentandolo con tinyxml2 que es lo mas sencillo que he visto

Para leer algo asi, y guardar cada dato en una variable

<Tests>
   <Test id="test0">
      <Inputs>
         <Input port="A" value="1" />
         <Input port="B" value="4.56" />
         <Input port="C" value="7" />      
      </Inputs>
      <Outputs>
         <Output port="D" value="10" />      
      </Outputs>
   </Test>
19  Programación / Programación C/C++ / Leer fichero XML desde C++ en: 30 Enero 2019, 11:37 am
Buenas a todos, recurro a este foro ya que llevo unos dias en los cuales no consigo leer un archivo xml desde un proyecto c++.

He intentado con MSXML pero el me coge bien el archivo **msxmlX.dll** (o quiero pensar eso), tambien he probado con TinyXML y nada.

Con Poco y pugiXML no encuentro mucha documentacion...

Estoy ahora con QtXML, que parece sencillo pero no usa Visual Studio.

Es basicamente leer un fichero xml y guardar variables.

Sabeis de algun videotutorial o web sencilla de seguir??

Un saludo.
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines