Jump to content

Found a specific word of a file .txt


MendeSolraC
 Share

Recommended Posts

Boa noite, antes de mais sou principiante na matéria, se assim o posso ser considerado.

Estou a aprender a linguagem C++ através do livro "Programação em C++ CONCEITOS BÁSICOS E ALGORITMOS", e há um exercício que é o 10 do capítulo III, onde estou a ter uma dificuldade em implementá-lo!

Podem ajudar-me? O problema reside no facto de não conseguir contar a palavra pretendida, dada pelo utilizador, sendo que com este código conta todas as palavras do ficheiro.

Agradeço desde já a atenção!!


#include<iostream>
#include<fstream>
#include<string>
using namespace std;
const int MAX_CHARS = 30;

void main()
{
char fileName[MAX_CHARS], word[MAX_CHARS];
int count = 0;

cout << "Name of thie file to open - ";
cin >> fileName;
cout << "Word to search, and count - ";
cin >> word;

ifstream fileToOpen(fileName);

while(!fileToOpen)
	   cout << "Cannot open the file " << fileName << ". Try again!" << endl;

while( fileToOpen >> word )											   // <--- aqui está a complicação
	  ++count;
cout << "The word '" << word << "' found " << count << " time" << (count > 1 ? "s." : ".") << endl;
system("pause");
}
Edited by Baderous
geshi
Link to comment
Share on other sites

tens que verificar se a palavra e' igual 'a palavra do utilizador.

string a="abc";
string b="abc";
if(a==b)
 cout<<"palavra igual"<<endl;
else
 cout<<"palavra diferente"<<endl;

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Link to comment
Share on other sites

cin >> word;

Neste código tens o ler do teclado a palavra a pesquisar

while( fileToOpen >> word )
 ++count;

aqui tens ler do ficheiro uma palavra guardando-a na variável "word", descartando o que lá está.

e enquanto a leitura de palavras suceder, incrementas um contador.

isso no final não é mais do que contar o número de palavras de um ficheiro !!!

o que precisas é ler a palavra do ficheiro e verificar que é igual a "word" lida anteriormente

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Exacto, HappyHippyHippo, mas isso é o eu já tenho, certo? Quero é comparar todas as palavras do ficheiro com a que o utilizador pretende, e não estou a conseguir fazê-lo! Para além desta instrução que está aqui, já tentei outras e nada!! Em C é bem mais fácil, mas em C++ não estou a conseguir... 😕

Link to comment
Share on other sites

Ok! Eu simplesmente estou a orientar-me por um livro de C++ que quer a solução desta situação! Fazer em C, e depois adaptá-lo para C++ não vai dar... Pois não altera só as chamadas de leitura pelos streams! Ou seja, não traz grandes resultados...

Mas pronto obrigado na mesma pelas dicas! 👍

Link to comment
Share on other sites

olha bem para o teu código ... a única coisa que tens do c++ é a leitura de stream !!!

no entanto o problema no código nem sequer é do uso do c++ ou do c ... está mesmo na maneira como estás a tentar resolver o problema

como te disse, estás a ler do ficheiro para a posição de memória onde tinhas guardado a palavra a verificar, só isso é um erro grave no algoritmo porque estás a perder a informação fornecida pelo utilizador

depois de resolver esse problema, terás de comparar as palavras, e só ai, se forem iguais, incrementar o contador

  • Vote 1
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Grande LOL para mim! Ontem pesquisei e pesquisei atrás de uma ajuda, mas agora num minuto, deslumbrei-me e consegui encontrar uma solução! E é simples!!

Mas o mais estranho, foi nas tantas pesquisas que fiz, não encontrar nada como isto:

while( fileToOpen >> word )
{
 if((strcmp(word, wordUser)) == 0)
  ++count;
}

Basicamente, através da instrução "fileToOpen >> word" é lida palavra a palavra do ficheiro, e depois em vez de usar a mesma variável para a do utilizador, usei uma variável nova, e a função strcmp trata do resto!

😄 Obrigado a todos pela atenção!!!

HappyHippyHippo, só agora vi a tua resposta, e era mesmo isso!! 👍

Edited by MendeSolraC
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.