| | |
Search for a word in a dictionary
Please support our C++ advertiser: Intel Parallel Studio Home
Thread Solved |
•
•
Join Date: Jun 2008
Posts: 182
Reputation:
Solved Threads: 18
Hi all.
I'm trying to write a "simple" program for a word game (something somewhat similar to Scrabble) and I got stopped by the task I tought to be easy enough to start with.
I have a text file (Italiano.list) wich is a collection of italian words listed alphabetically as below:
What I would like it to do is to let the user input a string (word) and then search for that word in the "dictionary". Obviously it should also tell if the word is present or not.
Here's what I wrote so far: it seems to me to be logical and quite simple but evidently there's something I am missing... I think it opens correctly the file and it stores as expected each line in the string current_word (substituting the 2nd if with a simple "cout << current_word << endl;" makes it print the whole dictionary on screen) but then it fails in comparison because it always state that the word is not present... even if that particular word actually IS present! Also at line 21 there is another curious error... comment should explain it.
Btw, thanks in advance for every hint or try you'll eventually give to me and sorry as always for my english.
Edit: here's the link to where I learned that tiny little bit of handling files I've tried to use in this program: http://www.cplusplus.com/doc/tutorial/files.html
I'm trying to write a "simple" program for a word game (something somewhat similar to Scrabble) and I got stopped by the task I tought to be easy enough to start with.
I have a text file (Italiano.list) wich is a collection of italian words listed alphabetically as below:
C++ Syntax (Toggle Plain Text)
a ab abaca abache abachi abacista abaciste abacisti abaco ...
What I would like it to do is to let the user input a string (word) and then search for that word in the "dictionary". Obviously it should also tell if the word is present or not.
Here's what I wrote so far: it seems to me to be logical and quite simple but evidently there's something I am missing... I think it opens correctly the file and it stores as expected each line in the string current_word (substituting the 2nd if with a simple "cout << current_word << endl;" makes it print the whole dictionary on screen) but then it fails in comparison because it always state that the word is not present... even if that particular word actually IS present! Also at line 21 there is another curious error... comment should explain it.
Btw, thanks in advance for every hint or try you'll eventually give to me and sorry as always for my english.
C++ Syntax (Toggle Plain Text)
#include <iostream> #include <fstream> #include <string> using namespace std; int main(void) { string key; string current_word; ifstream dictionary("Italiano.list"); cout << "Quale parola si vuole cercare?" << endl; // asks for a key cin >> key; cout << "La parola che si sta cercando e' la seguente: " << key << endl; // prints the key to checkif it's typed correctly if(!dictionary.is_open()) { cout << "Errore. Impossibile accedere al dizionario." << endl; // exits with error for not being able to open the dictionary return 1; } while(!dictionary.eof()) { getline(dictionary, current_word); // stores the current line of the dic in the current_word string... if(current_word==key) { // ... and then compares it with the user input cout << current_word << endl; cout << "La parola " << current_word << " e' uguale alla parola cercata." << endl; /* line 21: I wanted it to print the string stored in current_word in the case of matching with the user input for another check but it prints actually only " " e' uguale alla parola cercata." << endl; " ! Don't know why, because in the previous line it prints correctly the string current_word... */ cout << "La parola cercata e' presente nel dizionario." << endl; // tells that the word searched for has been found in the dictionary dictionary.close(); return 0; } } dictionary.close(); cout << "La parola cercata non e' presente nel dizionario." << endl; // tells that the word searched for has not been found in the dictionary. return 0; }
Edit: here's the link to where I learned that tiny little bit of handling files I've tried to use in this program: http://www.cplusplus.com/doc/tutorial/files.html
Last edited by mrboolf; Jun 30th, 2008 at 3:46 am.
I can't see why this program shouldn't work. The only thing I would change is:
Change these to lines to:
eof() is never a good function to use IMO.
cpp Syntax (Toggle Plain Text)
while(!dictionary.eof()) { getline(dictionary, current_word); // stores the current line
Change these to lines to:
cpp Syntax (Toggle Plain Text)
while(getline(dictionary, current_word)) {
eof() is never a good function to use IMO.
Last edited by niek_e; Jun 30th, 2008 at 3:56 am.
•
•
Join Date: Jun 2008
Posts: 182
Reputation:
Solved Threads: 18
Thanks for the advice. I made the change you suggested (I found it more beautiful, thx!) but I couldn't get any improvement so far...
Could the problem be within the file? The word I searched for was "abaco" and it's formatted exactly as shown in the previous post (I copy-pasted it) ...
Don't know if it's relevant (and I think it's not) but just to be complete let me say that I got 26 separate files (one for each alphabet letter) that I unified in one with "cat file1 file2 ... file26 Italiano.list"
Could the problem be within the file? The word I searched for was "abaco" and it's formatted exactly as shown in the previous post (I copy-pasted it) ...
Don't know if it's relevant (and I think it's not) but just to be complete let me say that I got 26 separate files (one for each alphabet letter) that I unified in one with "cat file1 file2 ... file26 Italiano.list"
•
•
Join Date: Jun 2008
Posts: 182
Reputation:
Solved Threads: 18
I'm sure you are right, there's a problem with line endings. If I insert an empty line immediately after a chosen word and then search for that word it works fine.
Anyway, neither
I downloaded the file from http://http://www.yorku.ca/lbianchi/...rds/index.html (This wordlist is Copyright © 1993-2002 Luigi M Bianchi, and is made freely available under the terms of the GNU General Public License. For further information concerning this license, please visit the GNU Project Web Server.).
If I can't think of anything better I'll end up inserting an empty line after each word of the list ç_ç
However, thanks for all the help, it was greatly appreciated
EDIT:
1000 Thanks and sorry for having disturbed with such a ridiculous problem (it wasn't even the right forum to post that, after all
)
Anyway, neither
flip -u Italiano.list (wich is supposed to convert line endings to unix specs) nor (expectedly) flip -m Italiano.list (wich on the contrary sets them to dos type) works.I downloaded the file from http://http://www.yorku.ca/lbianchi/...rds/index.html (This wordlist is Copyright © 1993-2002 Luigi M Bianchi, and is made freely available under the terms of the GNU General Public License. For further information concerning this license, please visit the GNU Project Web Server.).
If I can't think of anything better I'll end up inserting an empty line after each word of the list ç_ç
However, thanks for all the help, it was greatly appreciated

EDIT:
fromdos Italiano.list worked perfectly! Now there are no more problems, it finds every word just as expected 
1000 Thanks and sorry for having disturbed with such a ridiculous problem (it wasn't even the right forum to post that, after all
) Last edited by mrboolf; Jun 30th, 2008 at 4:39 am. Reason: Solved!
![]() |
Similar Threads
- Searching word for word (C++)
- Word Melt (Geeks' Lounge)
- Search Extender (Viruses, Spyware and other Nasties)
- String operations (C)
- better search tips from google (Search Engine Optimization)
- Help with input (C)
Other Threads in the C++ Forum
- Previous Thread: Pairs in random numbers
- Next Thread: error C2677: binary '==' : no global operator found
| Thread Tools | Search this Thread |
api array arrays based binary c++ c/c++ calculator char char* class classes code coding compile console conversion convert count database delete deploy desktop developer directshow dll download dynamic dynamiccharacterarray email encryption error file forms fstream function functions game givemetehcodez google graph gui homeworkhelp iamthwee ifstream input int java lib linkedlist linker linux list loop looping loops map math matrix memory multiple news number numbertoword output pointer problem program programming project python random read recursion recursive reference return rpg sorting string strings temperature template templates test text text-file tree unix url variable vector video visual visualstudio win32 windows winsock wordfrequency wxwidgets






