2012-07-20 140 views
-1

我有一个学生向量,每个元素由ID和测试答案组成。在字符串向量中查找部分字符串

ABCTFTFTF(ABC = ID,TFTFTF =答案)

我试图找回TFTFTF的只是块,并比较他们针对包括答案的正确一串一串的。

我明白它必须是:

  • 学生[I]

  • 创建子

  • 比较子串

  • (答案的开始= 10位,在位置30结束)
  • 作用于比较

但是我真的在语法上挣扎,任何人都可以指向正确的方向吗?

  • 编辑

尝试:

void getResults() 
{ 

    string found; 



for(int i = 0; i < 150; i++) 
    { 
     found = students[i].find(answers); 
     if(found == answers) 
     { 
      cout << "Student: " << i << "Passed" << endl; 
     } 
     else 
     { 
      cout << "Student: " << i << "Failed" << endl; 
     } 
    } 
} 

个人项目 - 不做作业

我下面这个每日C++ projecs螺纹:

http://www.cplusplus.com/forum/beginner/75558/

模拟数据:

OMXIZGWA TTFTFTFFTFTTFFFTTFTF 
XKVNYUVZ F FTFFFFFT TFFTTTFFF 
GGVDSSTQ TFFFTF FTTF TF TFFT 
XPYDXVIQ FFTTFT FTFT TFFTTTFT 
XVFUMFZL TTFFTFFTFFTFF FFTFFT 

(白字=没有给出答案)

*编辑答案

void getResults() 
{ 

    string found; 
    string foundSubString; 

    for(int i = 0; i < 150; i++) 
    { 
     found = students[i]; 

     foundSubString = found.substr (9,20); 


     if(foundSubString == answers) 
     { 
      cout << "Student: " << i << "Passed" << endl; 
     } 
     else 
     { 
      cout << "Student: " << i << "Failed" << endl; 
     } 
    } 
+2

你有什么试过?这是你工作的一部分吗?如果是作业,你必须绝对标记问题。 – 2012-07-20 22:39:40

+1

你有模拟数据文件吗? – 2012-07-20 22:40:47

+0

http://www.cplusplus.com/reference/string/string/ – 2012-07-20 22:44:02

回答

2

假设:

  • 所有ID都是唯一的
  • 每个ID都与一串答案相关联。

这听起来像是字典的工作。 C++ STL提供了一个方便的std::map

std::string answerKey = "TTFFTF" 
std::map<std::string, std::string> studentAnswers; 

studentAnswers["student1"] = "TFTTTF"; 
studentAnswers["student2"] = "FFTFTF"; 

// more students.... 

现在您已经定义了数据,您可以定义一个比较函数。说,你要找到错误的数量,你可以定义一个原型是这样的:

int compareAnswer(const std::string& correctAnswer, const std::string& valiantAttempt); 

:方便,这其实也正是从字符串老派的C函数。H,strcmp一样)

然后使用功能:

cout << "Student1 has " 
    << compareAnswer(answerKey, studentAnswers["student1"]) 
    << " errors" << endl; 

你当然会使用for循环和可能从文件中读取等数据,但我希望让你在去正确的方向。

+0

你好,我编辑了我的初始帖子,以清除我留给人们的一些含糊之处。所有ID都是唯一的。 – speak 2012-07-20 22:57:43