Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <stdio.h>
- #include <iostream>
- #include <string.h>
- #define INC 2
- using namespace std;
- void memExacta_str(char ** input, char **& output, int numElem) {
- output = new char*[numElem + 1];
- for (int i = 0; i < numElem; i++) {
- int size = strlen(input[i]) + 1;
- output[i] = new char [size];
- strcpy(output[i], input[i]);
- }
- output[numElem] = NULL;
- }
- bool isSeparador(char c) {
- if (isblank(c) || (c == ',') || (c == '.') || (c == ':') || (c == ';') || (c == '(') || (c == ')') || (c == '?'))
- return true;
- else return false;
- }
- void splitTokens(char* linea, char**&palabras, int &numPal) {
- numPal = 0;
- char * auxPal[50];
- if (!isSeparador(linea[0])) {
- auxPal[numPal] = linea;
- numPal++;
- }
- for (int i = 1; linea[i] != '\0'; i++) {
- if (!isSeparador(linea[i]) && (isSeparador(linea[i - 1]) || linea[i - 1] == '\0')) {
- auxPal[numPal] = &linea[i];
- numPal++;
- }
- if (isSeparador(linea[i]) && !isSeparador(linea[i - 1])) {
- linea[i] = '\0';
- }
- }
- memExacta_str(auxPal, palabras, numPal);
- }
- void incrementar(char*** &lista, int contador) {
- if (lista == NULL) {
- lista = new char **[INC + 1];
- for (int i = 0; i < INC + 1; i++) lista[i] = NULL;
- } else {
- char *** aux = new char **[contador + INC + 1];
- for (int i = 0; i < contador; i++) aux[i] = lista[i];
- for (int i = contador; i <= contador + INC; i++) aux[i] = NULL;
- delete [] lista;
- lista = aux;
- }
- }
- asignarDatos(int*& lstDatos, int codigo, int alto, int ancho) {
- lstDatos = new int[4];
- for (int i = 0; i <= 3; i++) {
- lstDatos[i] = 0;
- }
- lstDatos[0] = codigo;
- lstDatos[1] = alto;
- lstDatos[2] = ancho;
- lstDatos[3] = alto*ancho;
- }
- void leerImagenes(int ** &listaDatosImg, char*** &listaTagsImg, int** &listaImg) {
- int codigo;
- int alto, ancho;
- char c;
- char linea[200];
- listaTagsImg = NULL;
- listaDatosImg = new int*[3];
- listaImg = new int*[3];
- for (int i = 0; i < 1; i++) {
- listaDatosImg[i] = NULL;
- listaImg[i] = NULL;
- }
- int contador = 0;
- while (cin >> codigo) {
- char** palabras;
- int numPal;
- cin >> ws;
- while (c != ' ') {
- cin >>c;
- if ((c = cin.peek() == ' '))
- break;
- }
- cin >> ws;
- cin.getline(linea, 200, ' ');
- splitTokens(linea, palabras, numPal);
- if (listaTagsImg == NULL) {
- incrementar(listaTagsImg, contador);
- listaTagsImg[0] = palabras;
- } else {
- if (contador % INC == 0)
- incrementar(listaTagsImg, contador);
- listaTagsImg[contador] = palabras;
- }
- cin >> alto;
- cin.get();
- cin >> ancho;
- asignarDatos(listaDatosImg[contador], codigo, alto, ancho);
- cout << listaDatosImg[contador][0];
- listaImg[contador] = new int [alto * ancho + 1];
- int cont2 = 0;
- for (int i = 0; i < alto; i++) {
- for (int j = 0; j < ancho; j++) {
- cin >> c;
- if (c == '0')
- listaImg[contador][cont2] = 0;
- else
- listaImg[contador][cont2] = 1;
- cont2++;
- }
- }
- contador++;
- }
- }
- imprimirReporte(int **listaDatosImg, char *** listaTagsImg, int**listaImg) {
- cout << "Reporte de Dibujos" << endl;
- cout << "--------------------------------" << endl;
- int contador = 0;
- while (listaTagsImg[contador] != NULL) {
- int totalPixeles = listaDatosImg[contador][1] * listaDatosImg[contador][2];
- cout << "ID:" << listaDatosImg[contador][0] << "| Alto = " << listaDatosImg[contador][1] << "| Ancho = " << listaDatosImg[contador][2] << "| Total Pixeles = " << totalPixeles << endl;
- char** aux = listaTagsImg[contador];
- cout << "ETIQUETAS: ";
- for (int i = 0; i < 3; i++) {
- cout << aux[i];
- if (i < 2)
- cout << ", ";
- }
- cout << endl;
- cout << "--------------------------------" << endl;
- for (int i = 0; i < listaDatosImg[contador][3]; i++) {
- for (int j = 0; j < listaDatosImg[contador][2]; j++) {
- if (listaImg[i][j] == 1)
- cout << " ";
- else
- cout << "# ";
- }
- cout << endl;
- }
- cout << endl;
- contador++;
- }
- }
- int main(int argc, char** argv) {
- freopen("imagenes.txt", "r", stdin);
- int ** listaDatosImg;
- char*** listaTagsImg;
- int** listaImg;
- leerImagenes(listaDatosImg, listaTagsImg, listaImg);
- imprimirReporte(listaDatosImg, listaTagsImg, listaImg);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement