Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* |
- | @author Adrián Gil Andrés |
- | @date 06-05-2016 |
- | compilado con g++ en linux y corrido con ./a.out |
- | (debian "sudo apt-get install g++" for compiler) |
- | tener en la misma carpeta el archivo data.txt |
- | probar salida con dot -Tpng -O graph.gv |
- | */
- #include <string>
- #include <iostream>
- #include <sstream>
- #include <fstream>
- using namespace std;
- int main(){
- ifstream f;
- string frase; //cada linea de texto que cogemos
- string val = " '"; //el valor (nombre) de cada nodo
- string type; //guardamos el tipo de nodo para la decoración
- f.open ("data.txt");
- if(f.is_open()){ //si abrimos correctamente el fichero
- cout << "digraph {" << endl;
- while(!f.eof()){ //mientras no se acabe el fichero
- getline (f,frase); //leemos siguiente linea
- for(int i = 1; i < frase.size(); i++){ //recorremos la cadena letra a letra
- if (frase[i] == '#'){ //si es # empezamos a coger el tipo
- val = " '";
- i++;
- while(frase[i] != ' '){ //cuando hay espacio deja de ser nuestro tipo de nodo
- type = type + frase[i];
- i++;
- }
- i++;
- }
- val = val + frase[i]; //guardamos el resto de la linea como valor del nodo
- }
- cout << val + " [shape="; //imprimimos
- if(type=="attribute"){ //como C++ no tiene switch para strings, lo hago con if-else (que tostón para hacerlo...)
- cout << "diamond]";
- }else if(type=="cdata-section"){
- cout << "trapezium]";
- }else if(type=="comment"){
- cout << "note]";
- }else if(type=="element"){
- cout << "circle]";
- }else if(type=="entity-reference"){
- cout << "oval]";
- }else if(type=="processing-instruction"){
- cout << "triangle]";
- }else if(type=="text"){
- cout << "plaintext]";
- }
- cout << "'" << endl;
- val = " '"; //reiniciamos los datos
- type = ""; //para el siguiente nodo
- //cout << "Leido: " << frase << frase.size() << endl;
- }
- }else{
- cout << "Could not open the file or file doesn't exist" << endl;
- }
- cout << "}" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement