-2

好的,所以我在做一个家庭作业,我假设读取一个包含 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;
}
4

1 回答 1

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. 为菜单创建一个文本变量并将变量打印两次,而不是复制代码。
于 2013-07-14T18:51:29.943 回答