我正在用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;
}
}
}
答案 0 :(得分:0)
嗯,最简单的方法是使用字符频率数组。基本上,创建一个大小为26的整数数组(或您想要的任何数字类型 - 取决于您希望拥有的每个字母的数量),并简单地跟踪您拥有的每个字符的数量。
所以,让我们来看看你的例子。
当你读取每一行时,取第一个字符并执行以下操作:c - 65
以便将大写字母A转换为0,B代表1,C代表2等。然后,你可以简单地索引到数组并增加你得到的任何一个字母的频率。输出该行的其余部分。
完成所有输出后,再次返回数组并打印出找到的百分比。