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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


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

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Arreglos y Cadenas de caracteres AYUDA
« en: 3 Septiembre 2015, 00:53 am »

Hola necesito hacer un programa que me cuente las veces que se repite una palabra en un texto leido desde un fichero, lo que se me ocurre es ir guardando cada palabra en un espacio de un arreglo bidimensional, pero como hago esto? he intentado mil manera y no doy, les proporciono mi codigo, espero me puedan ayudar, saludos.


#include <string.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>

char lectura[1000],lectura2[1000][50],espacios[100],c;
int longi,i;

main()
{
FILE *enlace = fopen("archivo.txt", "r");
if(enlace==NULL)
{
perror("El archivo no se abrio!";
}
fscanf(enlace, " %[^n]", &lectura);
printf("%s", lectura);
fclose(enlace);

int palabras=1, cont=0;
while(cont<strlen(lectura))
{

if(c=getc(enlace)!=' ')

palabras++;
cont++;

}
printf("nnCantidad de caracteres %d", cont);
printf("nnCantidad de palabras %dn", palabras);

getch();
}


En línea

RockPosts

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Arreglos y Cadenas de caracteres AYUDA
« Respuesta #1 en: 4 Septiembre 2015, 20:27 pm »

¿Lo que quieres es saber cuántas veces se repite UNA palabra, o cuántas veces se repite cada palabra del archivo?

En el caso de que sea la primera opción, aquí te dejo un ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main () {
  6. char lpszText[] = "Esto es el texto que incluye el archivo. Esto no son datos reales Jaja";
  7. char lpszWordToBeChecked[256] = ""; // Contendrá la palabra a ser comparada
  8. char *lpszWord; // Contendrá las palabras leidas (solo una por ciclo)
  9. unsigned int uRepeatedTimes = 0; // Numero de veces que se ha repetido la palabra
  10. unsigned int nCounter = 0; // Contador usados en los ciclos 'for'
  11.  
  12. printf("Introduzca la palabra que desea que comparemos: ");
  13. scanf("%s", lpszWordToBeChecked);
  14.  
  15. for(nCounter = 0; lpszWordToBeChecked[nCounter] != 0; nCounter++) { // Convertimos la palabra a ser comparada a minusculas para así poder comparar las cadenas
  16. if(lpszWordToBeChecked[nCounter] >= 65 && lpszWordToBeChecked[nCounter] <= 90)
  17. lpszWordToBeChecked[nCounter] += 32;
  18. }
  19.  
  20. lpszWord = strtok(lpszText, " ,:.;-_123456789<>(){}/\\\""); // Tomamos una palabra de la cadena. El segundo parámetro contiene los caracteres que no forman una palabra
  21.  
  22. while(lpszWord != 0) {
  23. for(nCounter = 0; lpszWord[nCounter] != 0; nCounter++) { // A minusculas (para poder comparar las cadenas)
  24. if(lpszWord[nCounter] >= 65 && lpszWord[nCounter] <= 90)
  25. lpszWord[nCounter] += 32;
  26. }
  27.  
  28. if(strcmp(lpszWord, lpszWordToBeChecked) == 0) // Comparamos la cadena
  29. uRepeatedTimes++;
  30.  
  31. lpszWord = strtok(NULL, " ,:.;-_123456789<>(){}/\\\""); // Tomamos la siguiente palabra de la cadena
  32. }
  33.  
  34. printf("Las veces que se ha repetido la palabra '%s' son: %u", lpszWordToBeChecked, uRepeatedTimes); // Imprimimos el resultado final!
  35.  
  36. return 0;
  37. }

PD.: USA LAS ETIQUETAS GeSHI!!


En línea

d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
Re: Arreglos y Cadenas de caracteres AYUDA
« Respuesta #2 en: 5 Septiembre 2015, 04:28 am »

¿El fichero a leer es cualquiera al azar? o ¿El fichero fue escrito con una estructura?
de la primera forma, se necesita crear una funcion que lea los caracteres y los vaya agrupando y guardando en un arreglo, y despues comparar
Código
  1. if(isalpha());
  2. ///***///
  3. if(strcmpy(cadena1,cadena2)) cont++;
ahora para la segunda forma seria tal vez con un doble fread(); comparando lo que va leyendo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda por favor con manejo de cadenas de caracteres y numéricas
Programación C/C++
deschattenmann 7 3,709 Último mensaje 5 Julio 2010, 20:20 pm
por nicolas_cof
[ANSI C]Ayuda con cadenas de caracteres.
Programación C/C++
volteo0101 4 5,002 Último mensaje 27 Febrero 2011, 11:38 am
por volteo0101
arreglos de cadenas
Java
sauce19 5 4,294 Último mensaje 5 Agosto 2011, 11:11 am
por Debci
Ayuda con cadenas de caracteres.
Programación C/C++
GilbertoBrewer 8 3,947 Último mensaje 28 Noviembre 2014, 17:33 pm
por GilbertoBrewer
[Ayuda] Problema con cadenas de caracteres
Programación C/C++
jospar 3 3,142 Último mensaje 11 Mayo 2015, 15:57 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines