如何从单独的行中提取字母并使用它们执行某些操作?

时间:2016-03-31 16:24:55

标签: c++ string for-loop logic

我正在用c ++编写一个程序,它接收字母并打印出来。所以,像:

  

A AAAAA

     

BBBBB

     

C CCCCC

我使用for循环遍历输入中的所有字母,使用substr提取每个字母然后cout字母。 现在,我需要计算第一个垂直位置(粗体字母)中有多少个A,在这种情况下为1,并计算垂直列中A的百分比。 我怎么做?我很困惑,任何帮助表示赞赏!

谢谢!

这是代码:

while(s < numberL) 
{
  sp = word;
  s++
  for (int i = 0; i < correct.length(); i++)
  {
      if(answer.at(i) == correct.at(i)) 
      {
           word = answer.substr(i,1); 
           cout << word;
      }
      if ( answer.at(i) != correct.at(i) && answer.at(i) != '?')
      { 
           word = answer.substr(i,1);
           cout << word;
      }
      if (answer.at(i) == '?') 
      {
           word = answer.substr(i,1);
           cout << word; 
      }

   }
  }

1 个答案:

答案 0 :(得分:0)

嗯,最简单的方法是使用字符频率数组。基本上,创建一个大小为26的整数数组(或您想要的任何数字类型 - 取决于您希望拥有的每个字母的数量),并简单地跟踪您拥有的每个字符的数量。

所以,让我们来看看你的例子。

当你读取每一行时,取第一个字符并执行以下操作:c - 65以便将大写字母A转换为0,B代表1,C代表2等。然后,你可以简单地索引到数组并增加你得到的任何一个字母的频率。输出该行的其余部分。

完成所有输出后,再次返回数组并打印出找到的百分比。