Ir ao conteúdo
  • Cadastre-se
alankhelf.m

C++ Erro em C++ - Programa para contar palavras

Posts recomendados

Boa Noite

 

Pessoal eu tenho que fazer um programa para ler um texto e depois pedir uma palavra e fazer com que o programa conte quantas vezes essa palavra apareceu no texto.

Para isso eu criei o seguinte codigo:

 

#include <iostream>
#include <math.h>
#include <cstdlib>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
using namespace std;

int main(){
    int longitude;
    char texto[100];
    string palavra;
    
    cout<<"Escreve o Texto: "<<endl;
    gets(texto);
    
    cout<<"Escreve a palavra que deseja procurar: "<<endl;
    cin>>palavra;
    
    longitude=strlen(texto);
    int cont=0, i=0, contpalavra=0;
    
    while(i<longitude){
        while(i<longitude && texto==' '){
            i=i+1;
        }
        if(i<longitude){
            cont=cont+1;
        }
        while(i<longitude && texto!=' '){
            i=i+1;
     }
        while(i<longitude && texto == palavra){
            contpalavra=contpalavra+1;
            i=i+1;
        }
                
    }
    
    cout<<"A quantidade de palavras é:"<<cont<<endl;
    system ("pause");
    
    cout<<"A quantidade de vezes que palavra "<<palavra<<" apareceu no texto é: "<<contpalavra<<endl;
    system ("pause");
    return(0);
}

 

Só que este programa esta mostrando o seguinte erro:

[Error] no match for 'operator==' (operand types are 'char' and 'std::string {aka std::basic_string<char>}')

 

E não sei como arrumar esse código e faze-lo rodar perfeitamente, quando eu consegui rodar, ele sempre mostrou o resultado 0 como contpalavra.

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@alankhelf.m     você pode ir pegando caractere por caractere do texto atá encontrar um espaço e colocar em uma variável do tipo string , pois esse código está em c++ , depois compara com a palavra procurada usando o sinal de igualdade mesmo , que funciona bem no c++ , se fosse em  c  não funcionaria ,  em seguida reseta essa string para uma nova  comparação ,  então seu código poderia ser assim   :

#include <iostream>
#include <math.h>
#include <cstdlib>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <cstring>
#include <windows.h>
/*             0     1    2     3   4      5      6      7         8  */
typedef enum{black,blue,green,cyan,red,magenta,brown,lightgray,darkgray,   /* nome das cores */
lightblue,lightgreen,lightcyan,lightred,lightmagenta,yellow,white} colors;
/*  9         10         11        12        13         14    15 */

static int __BACKGROUND = 1/*BLACK*/;/*pode ser o numero ou o nome da cor*/
static int __FOREGROUND = lightgray;

void textcolor_2 (int letras, int fundo){/*para mudar a cor de fundo mude o background*/
    __FOREGROUND = letras;
    __BACKGROUND = fundo;
    SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),
    letras + (__BACKGROUND << 4));
}
using namespace std;
int main(){
    int longitude;
    char texto[100];
    string palavra,aux;
    textcolor_2(14,0);
    cout<<"Escreve o Texto: "<<endl;
    textcolor_2(11,0);
    gets(texto);
    cout<<endl;
    textcolor_2(14,0);
    cout<<"Escreve a palavra que deseja procurar: "<<endl;
    textcolor_2(11,0);
    cin>>palavra;
    cout<<endl;
    longitude=strlen(texto);
    int cont=0,i=0, contpalavra=0;
    while(i<longitude){
        aux.clear();
        while(texto[i]!=' ' &&texto[i]!='\0'){
            aux+=texto[i];
            i++;
        }
        i++;
        cont++;
        if(palavra == aux){
            contpalavra++;
        }
    }
    textcolor_2(10,0);
    cout<<"A quantidade de palavras eh --: ";
    textcolor_2(9,14);
    cout<<" "<<cont<<" \n"<<endl;
    textcolor_2(15,0);
    system ("pause");
    textcolor_2(14,0);
    cout<<"\nA quantidade de vezes que palavra ";
    textcolor_2(10,0);
    cout<<palavra;
    textcolor_2(14,0);
    cout<<" apareceu no texto eh --: ";
    textcolor_2(12,15);
    cout<<" "<<contpalavra<<" \n"<<endl;
    cout<<endl;
    textcolor_2(10,12);
    system ("pause");
    cout<<"\n\n"<<endl;
    textcolor_2(15,0);
    return(0);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também dá para fazer isso usando a função strtok, que retorna um ponteiro que pode ser comparada em um if com outra string (usando a função strcmp). As funções é do C.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!