/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Contar el numero de veces que aparece un palabra

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
jparrot2



Registrado: 03 Oct 2012
Mensajes: 45

MensajePublicado: 28/12/2012 3:00 pm
Título: Contar el numero de veces que aparece un palabra

Hola, tengo que hacer un programa que cuente el numero de veces que aparece una palabra en un texto introducido.
tengo el siguiente codigo:
Código:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define tmpMAX 25

typedef enum{fals,cert} bolea;

int main()
{
        char text[MAX+1],parbus[tmpMAX+1],paraulaTmp[tmpMAX+1];
        int index,index2,index3,cops=0;
        bolea trobat;

        trobat=fals;
        index=0;
        index2=0;
        index3=0;
        parbus[index3]='\0';
        text[index]='\0';
        paraulaTmp[index2]='\0';

        printf("Introduiex un text: \n");
        scanf("%100[^\n]",text);while(getchar()!='\n');
        printf("Introduiex la paraula a comptar: \n");
        scanf("%25[^\n]",parbus);while(getchar()!='\n');

        while(text[index]==' ')index++;

        while(text[index]!='\0'){

            //copiar text a paraulaTmp

            while(text[index]!=' ' && text[index]!='\0'){

                paraulaTmp[index2]=text[index];

                index++;
                index2++;

            }
            paraulaTmp[index2]='\0';

            //Compara paraules

            trobat=cert;

            for(index3=0;index3<index2;index3++){

                if(paraulaTmp[index3]!=parbus[index3]){
                    trobat=fals;break;
                }
            }

            if(parbus[index3]!='\0')trobat=fals;

            while(text[index]==' ')index++;

            paraulaTmp[0]='\0';index3=0;

            index2=0;
            if(trobat)cops++;
        }

        if(trobat)printf("La paraula %s apareix %d cops.\n",parbus,cops);
        if(!trobat)printf("Paraula no trobada!!\n");

    return 0;

}

un saludo
PD: Me podrian decir en que estava fallando
Volver arriba
jparrot2



Registrado: 03 Oct 2012
Mensajes: 45

MensajePublicado: 29/12/2012 5:00 am
Título:

Ya lo tengo:
Código:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
#define tmpMAX 25

typedef enum{fals,cert} bolea;

int main()
{
        char text[MAX+1],parbus[tmpMAX+1],paraulaTmp[tmpMAX+1];
        int index,index2,index3,cops=0;
        bolea trobat;

        trobat=fals;
        index=0;
        index2=0;
        index3=0;
        parbus[index3]='\0';
        text[index]='\0';
        paraulaTmp[index2]='\0';

        printf("Introduiex un text: \n");
        scanf("%100[^\n]",text);while(getchar()!='\n');
        printf("Introduiex la paraula a comptar: \n");
        scanf("%25[^\n]",parbus);while(getchar()!='\n');

        while(text[index]==' ')index++;

        while(text[index]!='\0'){

            //copiar text a paraulaTmp

            while(text[index]!=' ' && text[index]!='\0'){

                paraulaTmp[index2]=text[index];

                index++;
                index2++;

            }
            paraulaTmp[index2]='\0';

            //Compara paraules

            trobat=cert;

            for(index3=0;index3<index2;index3++){

                if(paraulaTmp[index3]!=parbus[index3]){
                    trobat=fals;break;
                }
            }

            if(parbus[index3]!='\0')trobat=fals;

            while(text[index]==' ')index++;

            paraulaTmp[0]='\0';index3=0;

            index2=0;
            if(trobat)cops++;
        }

        if(cops==0)printf("Paraula no trobada\n");
        if(cops>1)printf("La paraula %s apareix %d cops.\n",parbus,cops);
        if(cops==1)printf("La paraula %s apareix %d cop.\n",parbus,cops);


    return 0;

}
Volver arriba
Masakre



Registrado: 06 Jun 2012
Mensajes: 245

MensajePublicado: 29/12/2012 11:22 am
Título:

Bueno, no es exactamente lo mismo que tu ejercicio, pero como guarda cierta relación, de todos modos lo adjunto (en un futuro podría servirle a alguien):

Código:
// Ramos Suyón, JC.
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int contarWords(string);

int main()
{
    string s; int words=0;
    ifstream ficheroE("text.txt");
    if(!ficheroE.is_open())
    {
        cout<<"Imposible abrir el archivo de texto text.txt\n"
        "Verifique su existencia en el directorio del programa.\n";
        return 0;
    }
    while(getline(ficheroE, s)) // Mientras se lean líneas,
        if(s.size()) // si presenta elementos,
            words+=contarWords(s); // los contamos.
    cout<<"En text.txt se encontraron "<<words<<" palabras.\n\n";
    return 0;
}

int contarWords(string s){
    int i=0, words=0;
    while(i<s.size()){ // Se asegura de recorrer toda la línea.
        while(s[i++]==' '); // Obvia espacios en blanco.
        if(i<s.size()) // Si aún queda por recorrer,
        {
            words++; // cuenta esta palabra
            while(s[i++]!=' ' && i<s.size()); // y se posiciona al final de la misma.
        }
    }
    return words;
}


El enunciado es:
Cita:
3. Cree un programa que abra un fichero y cuente las palabras que contiene.

(Pág 76 - Thinking in C++)
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com