Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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);
}

 

Postado

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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!