Advertisement
Guest User

Untitled

a guest
May 21st, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.99 KB | None | 0 0
  1. #include <cstdio>
  2. #include "graphviewer.h"
  3. #include <fstream>
  4. #include <iostream>
  5. #include <sstream>
  6.  
  7. void exercicio1();
  8. void exercicio2();
  9. void exercicio3();
  10.  
  11.  
  12. void exercicio1()
  13. {
  14. GraphViewer *gv = new GraphViewer(600, 600, true);
  15.  
  16. gv->setBackground("background.jpg");
  17.  
  18. gv->createWindow(600, 600);
  19.  
  20.  
  21. gv->defineVertexColor("blue");
  22. gv->defineEdgeColor("black");
  23.  
  24. gv->addNode(0);
  25. gv->addNode(1);
  26. gv->addEdge(0, 0, 1, EdgeType::UNDIRECTED);
  27.  
  28. Sleep(100); // use sleep(1) in linux ; Sleep(100) on Windows
  29.  
  30. gv->removeEdge(0);
  31. gv->removeNode(1);
  32. gv->addNode(2);
  33.  
  34. gv->rearrange();
  35.  
  36. Sleep(100);
  37.  
  38. gv->addEdge(1, 0, 2, EdgeType::UNDIRECTED);
  39.  
  40. gv->setVertexLabel(0, "Isto e um no");
  41. gv->setEdgeLabel(1, "Isto e uma aresta");
  42.  
  43. gv->setVertexColor(2, "green");
  44. gv->setEdgeColor(1, "yellow");
  45.  
  46. gv->rearrange();
  47.  
  48. }
  49.  
  50. void exercicio2()
  51. {
  52. GraphViewer *gv = new GraphViewer(600, 600, false);
  53.  
  54. gv->createWindow(600, 600);
  55.  
  56. gv->defineEdgeColor("blue");
  57. gv->defineVertexColor("yellow");
  58.  
  59. gv->addNode(0,300,50);
  60. gv->addNode(1,318,58);
  61. gv->addNode(4,300,100);
  62. gv->addNode(7,282,58);
  63. gv->addNode(2,325,75);
  64. gv->addNode(3,318,93);
  65. gv->addNode(6,275,75);
  66. gv->addNode(5,282,93);
  67.  
  68. gv->addNode(8,150,200);
  69.  
  70. gv->setVertexColor(8, "green");
  71. gv->setVertexColor(9, "blue");
  72. gv->setVertexColor(10, "green");
  73. gv->setVertexColor(11, "blue");
  74. gv->setVertexColor(12, "green");
  75. gv->setVertexColor(13, "green");
  76. gv->addNode(9,300,200);
  77. gv->addNode(10,450,200);
  78. gv->addNode(11,300,400);
  79.  
  80. gv->addNode(12,200,550);
  81. gv->addNode(13,400,550);
  82.  
  83. gv->addEdge(0, 0, 1, EdgeType::UNDIRECTED);
  84. gv->addEdge(1, 1, 2, EdgeType::UNDIRECTED);
  85. gv->addEdge(2, 2, 3, EdgeType::UNDIRECTED);
  86. gv->addEdge(3, 3, 4, EdgeType::UNDIRECTED);
  87. gv->addEdge(4, 4, 5, EdgeType::UNDIRECTED);
  88. gv->addEdge(5, 5, 6, EdgeType::UNDIRECTED);
  89. gv->addEdge(6, 6, 7, EdgeType::UNDIRECTED);
  90. gv->addEdge(7, 7, 0, EdgeType::UNDIRECTED);
  91.  
  92. gv->addEdge(8, 4, 9, EdgeType::UNDIRECTED);
  93. gv->addEdge(9, 9, 8, EdgeType::UNDIRECTED);
  94. gv->addEdge(10, 9, 10, EdgeType::UNDIRECTED);
  95. gv->addEdge(11, 9, 11, EdgeType::UNDIRECTED);
  96. gv->addEdge(12, 11, 12, EdgeType::UNDIRECTED);
  97. gv->addEdge(13, 11, 13, EdgeType::UNDIRECTED);
  98.  
  99.  
  100. gv->rearrange();
  101. bool first=true;
  102.  
  103. while(1)
  104. {
  105. Sleep(100);
  106. if (first)
  107. {
  108. gv->removeNode(12);
  109. gv->removeNode(13);
  110. first=false;
  111. }
  112. else
  113. {
  114. gv->removeNode(20);
  115. gv->removeNode(21);
  116. }
  117. gv->addNode(14,250,550);
  118. gv->addNode(15,350,550);
  119. gv->addEdge(14, 11, 14, EdgeType::UNDIRECTED);
  120. gv->addEdge(15, 11, 15, EdgeType::UNDIRECTED);
  121. gv->rearrange();
  122.  
  123. Sleep(100);
  124. gv->removeNode(14);
  125. gv->removeNode(15);
  126. gv->addNode(16,300,550);
  127. gv->addNode(17,300,550);
  128. gv->addEdge(16, 11, 16, EdgeType::UNDIRECTED);
  129. gv->addEdge(17, 11, 17, EdgeType::UNDIRECTED);
  130. gv->rearrange();
  131. Sleep(100);
  132.  
  133. gv->removeNode(16);
  134. gv->removeNode(17);
  135. gv->addNode(18,250,550);
  136. gv->addNode(19,350,550);
  137. gv->addEdge(18, 11, 18, EdgeType::UNDIRECTED);
  138. gv->addEdge(19, 11, 19, EdgeType::UNDIRECTED);
  139. gv->rearrange();
  140. Sleep(100);
  141.  
  142. gv->removeNode(18);
  143. gv->removeNode(19);
  144. gv->addNode(20,200,550);
  145. gv->addNode(21,400,550);
  146. gv->addEdge(20, 11, 20, EdgeType::UNDIRECTED);
  147. gv->addEdge(21, 11, 21, EdgeType::UNDIRECTED);
  148. gv->rearrange();
  149. }
  150. }
  151.  
  152. void exercicio3()
  153. {
  154. GraphViewer *gv = new GraphViewer(600, 600, false);
  155.  
  156. gv->createWindow(600, 600);
  157.  
  158. gv->defineEdgeColor("blue");
  159. gv->defineVertexColor("yellow");
  160.  
  161. ifstream inFile;
  162.  
  163. //Ler o ficheiro nos.txt
  164. inFile.open("nos.txt");
  165.  
  166. if (!inFile) {
  167. cerr << "Unable to open file datafile.txt";
  168. exit(1); // call system to stop
  169. }
  170.  
  171. std::string line;
  172.  
  173. int idNo=0;
  174. int X=0;
  175. int Y=0;
  176.  
  177. while(std::getline(inFile, line))
  178. {
  179. std::stringstream linestream(line);
  180. std::string data;
  181.  
  182. linestream >> idNo;
  183.  
  184. std::getline(linestream, data, ';'); // read up-to the first ; (discard ;).
  185. linestream >> X;
  186. std::getline(linestream, data, ';'); // read up-to the first ; (discard ;).
  187. linestream >> Y;
  188. gv->addNode(idNo,X,Y);
  189.  
  190. }
  191.  
  192. inFile.close();
  193.  
  194.  
  195. //Ler o ficheiro arestas.txt
  196. inFile.open("arestas.txt");
  197.  
  198. if (!inFile) {
  199. cerr << "Unable to open file datafile.txt";
  200. exit(1); // call system to stop
  201. }
  202.  
  203. int idAresta=0;
  204. int idNoOrigem=0;
  205. int idNoDestino=0;
  206.  
  207. while(std::getline(inFile, line))
  208. {
  209. std::stringstream linestream(line);
  210. std::string data;
  211.  
  212.  
  213. linestream >> idAresta;
  214.  
  215. std::getline(linestream, data, ';'); // read up-to the first ; (discard ;).
  216. linestream >> idNoOrigem;
  217. std::getline(linestream, data, ';'); // read up-to the first ; (discard ;).
  218. linestream >> idNoDestino;
  219. gv->addEdge(idAresta,idNoOrigem,idNoDestino, EdgeType::UNDIRECTED);
  220.  
  221. }
  222.  
  223. inFile.close();
  224.  
  225. gv->rearrange();
  226. }
  227.  
  228. int main() {
  229. exercicio1();
  230. //exercicio2();
  231. //exercicio3();
  232. getchar();
  233. return 0;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement