我需要帮助进行单词搜索和计数

时间:2013-07-14 17:03:14

标签: c++ string

好的,我正在做一个家庭作业,我假设读取一个带有100个选定单词的文本文件,然后读取另一个“文本”文件,并比较这些100个选定单词中有多少出现在“文本”文件中是最长和最短的单词以及这些选定单词在文本文件中的时间。我需要完全的帮助这是我到目前为止所得到的。顺便说一句,我仍然没有输入所选的文件,这就是为什么那些ifs语句不完整

#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>


using namespace std;


int main ()
{
int fileNumber;
string Words [100];
string wordCounts [100];
string Frequencies [100];
string shortest = "abcdefghijklmnopqrstuvwxyz";
string longest = "";
int totalWordCount = 0;
ifstream inData;
int I=0;

inData.open("SelectWords.txt"); 

while ( !inData.eof () ) {
    inData >> Words [I];

}
int irow;
while ( irow=0, irow<=100, irow++) {
cout<<Words[I]<<endl;
}
cout<<"Choose a file you want to open"<<endl;
cout<<"1= A Modest Proposal"<<endl;
cout<<"2=Apology" <<endl;
cout<<"3=The Call of the Wild"<<endl;
cout<<"4=The Adventures of Tom Sawyer"<<endl;
 cin>> fileNumber;
 while ((fileNumber<1) || (fileNumber>4))

    {
cout<<"Error please try again"<<endl;
cout<<"Choose a file you want to open"<<endl;
cout<<"1 - A Modest Proposal"<<endl;
cout<<"2 - Apology" <<endl;
cout<<"3 - The Call of the Wild"<<endl;
cout<<"4 - The Adventures of Tom Sawyer"<<endl;
cin>> fileNumber;
 }

  if (fileNumber==1)
 {
 }
 if (fileNumber==2)
 {
 }
 if (fileNumber==3)
 {
 }
 if (fileNumber==4)
 {
 }



system ("pause");
return 0;
}

1 个答案:

答案 0 :(得分:2)

我会做这样的事情:

std::string filename;
switch (filenumber)
{
  case 1:
    filename = "modest_proposal.txt";
    break;
  case 2:
    filename = "apology.txt";
    break;
  //...
}

std::ifstream target_file(filename.c_str());
if (!target_file)
{
  std::cerr << "Error opening file " << filename << endl;
  return EXIT_FAILURE;
}

std::string word;
while (target_file >> word)
{
  // Search word list
}

请注意我只使用switch来确定文件名。无论文件名如何,算法的其余部分都是相同的。

修改1:建议

  1. 使用std::map<word, count>代替两个单独的数组。
  2. 为菜单创建一个文本变量,并将变量打印两次 而不是复制代码。