elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  programa c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: programa c++  (Leído 4,187 veces)
kiara_luna

Desconectado Desconectado

Mensajes: 13


Ver Perfil
programa c++
« 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();
}



« Última modificación: 10 Abril 2011, 21:52 pm por kiara_luna » En línea

kiara
Don Pollo

Desconectado Desconectado

Mensajes: 74

/* No comments */


Ver Perfil
Re: contar lineas y variables de archvio.cpp
« Respuesta #1 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.


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: contar lineas y variables de archvio.cpp
« Respuesta #2 en: 3 Abril 2011, 08:31 am »

Yo separaría todo por tokens, algo así:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(void)
  5. {
  6.    FILE *file = fopen("./archivo.cpp", "r");
  7.    if(file == NULL)
  8.    {
  9.        perror("Error abriendo archivo");
  10.        exit(EXIT_FAILURE);
  11.    }
  12.  
  13.    char linea[1000], *token;
  14.    unsigned i = 0;
  15.  
  16.    while(fgets(linea, 999, file) != NULL)
  17.    {
  18.        i++;
  19.        token = strtok(linea, " ");
  20.        if(!strcmp(token, "int"))
  21.        {
  22.            printf("He encontrado la definición de una variable int en la línea : %d\n", i);
  23.        }
  24.        token = strtok(NULL, " ");
  25.  
  26.    }
  27.    fclose(file);
  28.    return EXIT_SUCCESS;
  29. }
  30.  

Salida analizando el archivo que pones:


Código:
[leo@archero c_proyects]$ ./code
He encontrado la definición de una variable int en la línea : 9
He encontrado la definición de una variable int en la línea : 10
He encontrado la definición de una variable int en la línea : 11
He encontrado la definición de una variable int en la línea : 12
He encontrado la definición de una variable int en la línea : 16
[leo@archero c_proyects]$
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kiara_luna

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: contar lineas y variables de archvio.cpp
« Respuesta #3 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??
En línea

kiara
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: contar lineas y variables de archvio.cpp
« Respuesta #4 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.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kiara_luna

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: contar lineas y variables de archvio.cpp
« Respuesta #5 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();
}

En línea

kiara
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: contar lineas y variables de archvio.cpp
« Respuesta #6 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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(void)
  5. {
  6.    FILE *file = fopen("./archivo.cpp", "r");
  7.    if(file == NULL)
  8.    {
  9.        perror("Error abriendo archivo");
  10.        exit(EXIT_FAILURE);
  11.    }
  12.  
  13.    char linea[1000], *token;
  14.    unsigned i = 0;
  15.  
  16.    while(fgets(linea, 999, file) != NULL)
  17.    {
  18.        i++;
  19.        token = strtok(linea, " ");
  20.        if(!strcmp(token, "int"))
  21.        {
  22.            printf("He encontrado la definición de una variable int en la línea : %d\n", i);
  23.        }
  24.        token = strtok(NULL, " ");
  25.  
  26.    }
  27.    printf("\nLineas totales : %d\n", i);
  28.    fclose(file);
  29.    return EXIT_SUCCESS;
  30. }
  31.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: contar lineas y variables de archvio.cpp
« Respuesta #7 en: 4 Abril 2011, 10:32 am »

Algo así se podría hacer?
Código
  1. string c
  2. int numeros_de_int=0;
  3. ifstream f("file.cpp");
  4. file >> s;
  5. for(int i=0;c[i];i++){
  6. if(c[i]=='i' && c[i+1]=='n' && c[i+2]=='t' && ( c[i+3]== ' ' || c[i+3]=='*')
  7. for(int j=i;c[j]!=';';j++){
  8. if(c[j]==',')numeros_de_int++;
  9. }
  10. }
  11.  
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.
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: contar lineas y variables de archvio.cpp
« Respuesta #8 en: 4 Abril 2011, 14:36 pm »

De que puede funcionar puede, pero sería mucho engorro haciéndolo así.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
kiara_luna

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: programa c++
« Respuesta #9 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, "//"))
En línea

kiara
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algun Programa para descifrar un programa
Programación Visual Basic
hacksoft 6 5,013 Último mensaje 4 Julio 2005, 10:45 am
por Kizar
Programa que hace click en un lugar fuera del programa [c#]
.NET (C#, VB.NET, ASP)
Un usuario 1 2,785 Último mensaje 24 Octubre 2006, 22:58 pm
por SeniorX
hacer programa Programa para almacenar fotos « 1 2 »
Programación Visual Basic
ThonyMaster 11 8,601 Último mensaje 2 Diciembre 2008, 20:58 pm
por ssccaann43 ©
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines