Título: programa c++ Publicado por: kiara_luna en 3 Abril 2011, 00:27 am hola quiero crear un programa que capture un archivo.cpp y me diga el numero de lineas, el numero de variables y que tipo de variables son(int, float, char), ya pude capturar el archivo y contar las lineas pero no se como contar las variables ayuda!!!
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void main() { clrscr(); FILE *archivo; int v_c; int v_contador=0; int v_contador2=0; int v_contador3=0; char v_nombre[25]; char *aray[4]; int i; aray[0] = strdup("if"); aray[1] = strdup("for"); aray[2] = strdup("while"); aray[3] = strdup("else"); printf("Digite el nombre del archivo, con su respectiva extensión\n"); scanf("%s",v_nombre); //El usuario ingresa el nombre archivo = fopen(v_nombre, "r"); //Abrimos el archivo if (archivo == NULL) //En caso de que no exista el archivo { printf("El archivo no existe \n"); exit (EXIT_FAILURE); } else { while (v_c!=EOF) { v_c = getc(archivo); // Obtiene un caracter del archivo putchar(v_c); // Lo despliega en pantalla y continua.. if (v_c==59) // valor Accii del punto y coma ";" { v_contador++; } if (v_c==125) { v_contador2++; } if(v_c==32||v_c==10) //Contador de palabras { v_contador3++; } } fclose(archivo); // Cerramos el Archivo de texto printf("\n\n\n\n El numero de Lineas que termina en ; es: %d",v_contador); printf("\n # de lineas que finalizan en %d",v_contador2); printf("\n # de Palabras es: %d",v_contador3); } getch(); } Título: Re: contar lineas y variables de archvio.cpp Publicado por: Don Pollo en 3 Abril 2011, 02:45 am Deberías crear plantillas para poder ir comparando con las palabras que te encuentres en el texto. Yo compararía carácter a carácter todas las palabras con todas las plantillas y si con una sola letra ya no equivale a la plantilla con la que la estoy usando ó paso a la siguiente palabra porque ya he usado todas las plantillas con dicha palabra ó paso de plantilla.
Ni que decir tiene que las plantillas serían "char", "float", "int" y todos los tipos de variables que quieras contabilizar. Título: Re: contar lineas y variables de archvio.cpp Publicado por: leogtz en 3 Abril 2011, 08:31 am Yo separaría todo por tokens, algo así:
Código
Salida analizando el archivo que pones: Código: [leo@archero c_proyects]$ ./code Título: Re: contar lineas y variables de archvio.cpp Publicado por: kiara_luna en 4 Abril 2011, 00:04 am hola,
trate de correr el programa como tu lo planteastes pero no corre?? no entiendo porq.., me dijeron que lo hiciera con substring pero la verdad no he manejado eso?? Título: Re: contar lineas y variables de archvio.cpp Publicado por: leogtz en 4 Abril 2011, 00:07 am Si estas en Windows, quita edita esta línea:
Código: FILE *file = fopen("./archivo.cpp", "r"); Y dejala así: Código: FILE *file = fopen("archivo.cpp", "r"); Obviamente archivo.cpp debe estar en la misma ubicación (carpeta) donde esté el ejecutable. Añade una pausa al final para que puedas ver el resultado y no se te cierre la consola. Título: Re: contar lineas y variables de archvio.cpp Publicado por: kiara_luna en 4 Abril 2011, 00:45 am hola gracias por tu ayuda, ya arregle mi programa con lo que tu me diste de aporte, el pequeño problema que se me presento es que no me esta contando ahora las lineas
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> void main() { clrscr(); FILE *file; int v_c; int v_contador=0; int v_contador2=0; int v_contador3=0; char v_nombre[25]; char *aray[4]; int i; aray[0] = strdup("if"); aray[1] = strdup("for"); aray[2] = strdup("while"); aray[3] = strdup("else"); printf("Digite el nombre del archivo, con su respectiva extensión\n"); scanf("%s",v_nombre); //El usuario ingresa el nombre file = fopen(v_nombre, "r"); //Abrimos el archivo if (file == NULL) //En caso de que no exista el archivo { printf("El archivo no existe \n"); exit (EXIT_FAILURE); } else { while (v_c!=EOF) { v_c = getc(file); // Obtiene un caracter del archivo putchar(v_c); // Lo despliega en pantalla y continua.. if (v_c==59) // valor Accii del punto y coma ";" { v_contador++; } if (v_c==125) { v_contador2++; } if(v_c==32||v_c==10) //Contador de palabras { v_contador3++; } char linea[1000], *token; unsigned i=0; while(fgets(linea, 999, file) != NULL) { i++; token = strtok(linea, " "); if(!strcmp(token, "int")) { printf("He encontrado la definición de una variable int en la línea : %d\n", i); } token = strtok(NULL, " "); } } fclose(file); // Cerramos el Archivo de texto printf("\n\n\n\n El numero de Lineas que termina en ; es: %d",v_contador); printf("\n # de lineas que finalizan en } %d",v_contador2); printf("\n # de Palabras es: %d",v_contador3); } getch(); } Título: Re: contar lineas y variables de archvio.cpp Publicado por: leogtz en 4 Abril 2011, 01:00 am Si pusiste atención (creo que no) te darías cuenta que la variable "i" guarda el número de líneas.
Código
Título: Re: contar lineas y variables de archvio.cpp Publicado por: anonimo12121 en 4 Abril 2011, 10:32 am Algo así se podría hacer?
Código Podría funcionar esto pero tendría más bugs que windows XDD ademas que file >> s se corta en espacios xD pero podría ser una comparación similar a la que he hecho creo. xDD suerte PD: lo escrito aquí asique supongo que habrá muchos fallos. Título: Re: contar lineas y variables de archvio.cpp Publicado por: leogtz en 4 Abril 2011, 14:36 pm De que puede funcionar puede, pero sería mucho engorro haciéndolo así.
Título: Re: programa c++ Publicado por: kiara_luna en 10 Abril 2011, 22:35 pm hola xafi, gracias por tu aporte lo intente por ese lado y me funcionó a la perfeccion, solo que demore un poco mas... pero bueno mi pregunta ahora es si puede en ese mismo programa contar los comentarios que hay en el archivo que cargue a traves de token y si la sentencia podria ir igual a la de contar el int??? if(!strcmp(token, "//"))
|