Ir ao conteúdo
  • Cadastre-se

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
Link para o comentário
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);
}

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!