Advertisement
xlujiax

Untitled

Oct 9th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <stdio.h>
  3. #include <iostream>
  4. #include <string.h>
  5. #define INC 2
  6.  
  7. using namespace std;
  8.  
  9. void memExacta_str(char ** input, char **& output, int numElem) {
  10. output = new char*[numElem + 1];
  11. for (int i = 0; i < numElem; i++) {
  12. int size = strlen(input[i]) + 1;
  13. output[i] = new char [size];
  14. strcpy(output[i], input[i]);
  15. }
  16. output[numElem] = NULL;
  17. }
  18.  
  19. bool isSeparador(char c) {
  20. if (isblank(c) || (c == ',') || (c == '.') || (c == ':') || (c == ';') || (c == '(') || (c == ')') || (c == '?'))
  21. return true;
  22. else return false;
  23. }
  24.  
  25. void splitTokens(char* linea, char**&palabras, int &numPal) {
  26.  
  27. numPal = 0;
  28. char * auxPal[50];
  29. if (!isSeparador(linea[0])) {
  30. auxPal[numPal] = linea;
  31. numPal++;
  32. }
  33. for (int i = 1; linea[i] != '\0'; i++) {
  34. if (!isSeparador(linea[i]) && (isSeparador(linea[i - 1]) || linea[i - 1] == '\0')) {
  35. auxPal[numPal] = &linea[i];
  36. numPal++;
  37. }
  38. if (isSeparador(linea[i]) && !isSeparador(linea[i - 1])) {
  39. linea[i] = '\0';
  40. }
  41. }
  42. memExacta_str(auxPal, palabras, numPal);
  43. }
  44.  
  45. void incrementar(char*** &lista, int contador) {
  46. if (lista == NULL) {
  47. lista = new char **[INC + 1];
  48. for (int i = 0; i < INC + 1; i++) lista[i] = NULL;
  49. } else {
  50. char *** aux = new char **[contador + INC + 1];
  51. for (int i = 0; i < contador; i++) aux[i] = lista[i];
  52. for (int i = contador; i <= contador + INC; i++) aux[i] = NULL;
  53. delete [] lista;
  54. lista = aux;
  55. }
  56. }
  57.  
  58. asignarDatos(int*& lstDatos, int codigo, int alto, int ancho) {
  59. lstDatos = new int[4];
  60. for (int i = 0; i <= 3; i++) {
  61. lstDatos[i] = 0;
  62. }
  63. lstDatos[0] = codigo;
  64. lstDatos[1] = alto;
  65. lstDatos[2] = ancho;
  66. lstDatos[3] = alto*ancho;
  67.  
  68.  
  69. }
  70.  
  71. void leerImagenes(int ** &listaDatosImg, char*** &listaTagsImg, int** &listaImg) {
  72. int codigo;
  73. int alto, ancho;
  74. char c;
  75. char linea[200];
  76. listaTagsImg = NULL;
  77. listaDatosImg = new int*[3];
  78. listaImg = new int*[3];
  79. for (int i = 0; i < 1; i++) {
  80. listaDatosImg[i] = NULL;
  81. listaImg[i] = NULL;
  82. }
  83. int contador = 0;
  84. while (cin >> codigo) {
  85. char** palabras;
  86. int numPal;
  87. cin >> ws;
  88. while (c != ' ') {
  89. cin >>c;
  90. if ((c = cin.peek() == ' '))
  91. break;
  92. }
  93.  
  94. cin >> ws;
  95. cin.getline(linea, 200, ' ');
  96. splitTokens(linea, palabras, numPal);
  97.  
  98. if (listaTagsImg == NULL) {
  99. incrementar(listaTagsImg, contador);
  100. listaTagsImg[0] = palabras;
  101. } else {
  102. if (contador % INC == 0)
  103. incrementar(listaTagsImg, contador);
  104. listaTagsImg[contador] = palabras;
  105. }
  106.  
  107.  
  108. cin >> alto;
  109. cin.get();
  110. cin >> ancho;
  111.  
  112. asignarDatos(listaDatosImg[contador], codigo, alto, ancho);
  113. cout << listaDatosImg[contador][0];
  114. listaImg[contador] = new int [alto * ancho + 1];
  115. int cont2 = 0;
  116. for (int i = 0; i < alto; i++) {
  117. for (int j = 0; j < ancho; j++) {
  118. cin >> c;
  119. if (c == '0')
  120. listaImg[contador][cont2] = 0;
  121. else
  122. listaImg[contador][cont2] = 1;
  123. cont2++;
  124. }
  125. }
  126. contador++;
  127. }
  128. }
  129.  
  130. imprimirReporte(int **listaDatosImg, char *** listaTagsImg, int**listaImg) {
  131. cout << "Reporte de Dibujos" << endl;
  132. cout << "--------------------------------" << endl;
  133. int contador = 0;
  134.  
  135. while (listaTagsImg[contador] != NULL) {
  136. int totalPixeles = listaDatosImg[contador][1] * listaDatosImg[contador][2];
  137. cout << "ID:" << listaDatosImg[contador][0] << "| Alto = " << listaDatosImg[contador][1] << "| Ancho = " << listaDatosImg[contador][2] << "| Total Pixeles = " << totalPixeles << endl;
  138. char** aux = listaTagsImg[contador];
  139. cout << "ETIQUETAS: ";
  140. for (int i = 0; i < 3; i++) {
  141. cout << aux[i];
  142. if (i < 2)
  143. cout << ", ";
  144. }
  145. cout << endl;
  146.  
  147. cout << "--------------------------------" << endl;
  148. for (int i = 0; i < listaDatosImg[contador][3]; i++) {
  149. for (int j = 0; j < listaDatosImg[contador][2]; j++) {
  150. if (listaImg[i][j] == 1)
  151. cout << " ";
  152. else
  153. cout << "# ";
  154. }
  155. cout << endl;
  156. }
  157. cout << endl;
  158. contador++;
  159. }
  160. }
  161.  
  162. int main(int argc, char** argv) {
  163. freopen("imagenes.txt", "r", stdin);
  164. int ** listaDatosImg;
  165. char*** listaTagsImg;
  166. int** listaImg;
  167.  
  168. leerImagenes(listaDatosImg, listaTagsImg, listaImg);
  169.  
  170. imprimirReporte(listaDatosImg, listaTagsImg, listaImg);
  171.  
  172. return 0;
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement