• Sábado 27 de Abril de 2024, 01:09

Autor Tema:  contar palabras de una cadena de caracteres  (Leído 38110 veces)

juan1987

  • Nuevo Miembro
  • *
  • Mensajes: 1
  • Nacionalidad: 00
    • Ver Perfil
Re:contar palabras de una cadena de caracteres
« Respuesta #25 en: Jueves 22 de Septiembre de 2011, 20:03 »
0
Hola, he intentado probar ese código pero no funciona. ¿Están seguros que funciona? ¿Ya lo probaron?
Gracias,
Juan

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re:contar palabras de una cadena de caracteres
« Respuesta #26 en: Viernes 23 de Septiembre de 2011, 22:24 »
0
Acabo de arreglar el fallo en el ejemplo que puse para C++.

Esta es otra forma de contar palabras, esta vez para C.
Básicamente cuenta las transiciones entre palabras y secuencias de espacios en blanco:

main.c
Código: [Seleccionar]
#include <stdio.h>

int contarPalabras(const char* cadena)
{
    int cambios = 1;
    int anteriorEsEspacio = 1;
    int actualEsEspacio;

    if (0 == cadena) return 0;

    while (*cadena)
    {
        actualEsEspacio = isspace(*cadena) != 0;
        cambios += actualEsEspacio ^ anteriorEsEspacio;
        anteriorEsEspacio = actualEsEspacio;
        cadena++;
    }

    return cambios / 2;
}

void imprimirPalabras(const char* cadena)
{
    printf("%s\nPalabras: %d\n\n", cadena, contarPalabras(cadena));
}

int main()
{
    imprimirPalabras("");
    imprimirPalabras("     ");
    imprimirPalabras("una");
    imprimirPalabras(" una");
    imprimirPalabras("una ");
    imprimirPalabras(" una ");
    imprimirPalabras(" dos palabras ");
    imprimirPalabras("dos   palabras");
    imprimirPalabras("  Varias palabras   separadas   por uno o varios espacios");
    imprimirPalabras("Varias \n Palabras\n en \n  varias  \nlineas");
}

ElZard

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:contar palabras de una cadena de caracteres
« Respuesta #27 en: Miércoles 9 de Noviembre de 2011, 23:06 »
0
Acabo de arreglar el fallo en el ejemplo que puse para C++.

Esta es otra forma de contar palabras, esta vez para C.
Básicamente cuenta las transiciones entre palabras y secuencias de espacios en blanco:

main.c
Código: [Seleccionar]
#include <stdio.h>

int contarPalabras(const char* cadena)
{
    int cambios = 1;
    int anteriorEsEspacio = 1;
    int actualEsEspacio;

    if (0 == cadena) return 0;

    while (*cadena)
    {
        actualEsEspacio = isspace(*cadena) != 0;
        cambios += actualEsEspacio ^ anteriorEsEspacio;
        anteriorEsEspacio = actualEsEspacio;
        cadena++;
    }

    return cambios / 2;
}

void imprimirPalabras(const char* cadena)
{
    printf("%s\nPalabras: %d\n\n", cadena, contarPalabras(cadena));
}

int main()
{
    imprimirPalabras("");
    imprimirPalabras("     ");
    imprimirPalabras("una");
    imprimirPalabras(" una");
    imprimirPalabras("una ");
    imprimirPalabras(" una ");
    imprimirPalabras(" dos palabras ");
    imprimirPalabras("dos   palabras");
    imprimirPalabras("  Varias palabras   separadas   por uno o varios espacios");
    imprimirPalabras("Varias \n Palabras\n en \n  varias  \nlineas");
}

No me gusta revivir temas, pero tengo una duda, y no me gusta quedarme con dudas, y es que soy alumno de primer año
y con suerte lo mas dificil que me han pasado es arreglos y funciones en c y no entiendo ni mitad de sus codigos, pero igual pude hacer un programa que cuenta palabras

Código: [Seleccionar]
#include <stdio.h>

char a[100];

int Calcular_Palabras ()
{
    int palabras=1,contador=0;
   
    while(a[contador] != '\0') {
    if(a[contador] == ' ')
    palabras++;
    contador++;
    }
   
    return palabras;
}

int main (void)
{     
    while (1) {
    printf("\n\tIngrese una cadena: ");
    gets(a);
   
    printf("\n\tEl numero de palabras es: %i\n\n",Calcular_Palabras());
   
    }
   
    return 0;   
}

entonces no entiendo por que ustedes lo hacen tan dificil y con tantas cosas... o sere yo xD
« última modificación: Miércoles 9 de Noviembre de 2011, 23:12 por ElZard »

herzdark

  • Miembro activo
  • **
  • Mensajes: 38
  • Nacionalidad: ar
    • Ver Perfil
Re:contar palabras de una cadena de caracteres
« Respuesta #28 en: Viernes 11 de Noviembre de 2011, 22:06 »
0
No me gusta revivir temas, pero tengo una duda, y no me gusta quedarme con dudas, y es que soy alumno de primer año
y con suerte lo mas dificil que me han pasado es arreglos y funciones en c y no entiendo ni mitad de sus codigos, pero igual pude hacer un programa que cuenta palabras

Código: [Seleccionar]
#include <stdio.h>

char a[100];

int Calcular_Palabras ()
{
    int palabras=1,contador=0;
   
    while(a[contador] != '\0')
    {if(a[contador] == ' ')
      palabras++;
     contador++;
    }
   
    return palabras;
}

int main (void)
{     
    while (1) {
    printf("\n\tIngrese una cadena: ");
    gets(a);
   
    printf("\n\tEl numero de palabras es: %i\n\n",Calcular_Palabras());
   
    }
   
    return 0;   
}

entonces no entiendo por que ustedes lo hacen tan dificil y con tantas cosas... o sere yo xD

te digo mi experiencia, yo cuando estaba en primer año veia el codigo como lo hiciste vos pero despues cuando vallas pasando los años te exijen q no lo uses con subindices y otras cosas más y respecto a tu codigo la sentencia:

Código: C
  1. int palabra=1;

estas contando una palabra de más por eso empezalo con 0, si no me crees con tu codigo si yo ingresará HOLA A TODOS me retornaría 4 siendo la cantidad de palabras 3