计算for循环c ++中的出现次数

时间:2013-04-18 16:32:28

标签: c++ arrays visual-c++

我是c ++的新手,我要做的就是用一段文字或段落来计算一个字母出现的次数,并将其存储到一个名为频率数组的数组中。

下面的代码工作到一定程度,如果用户键入hello frequencyarray存储11121,如果用户键入aaba频率数组存储1213,会发生什么 我不希望运行总计我希望数组存储1121和31.所以如果出现相同的字母,它会向数组添加1。

谢谢大卫

#include <iostream> //for cout cin
#include <string>   //for strings
#include <fstream>  //for files

using namespace std;

int main()
{       
    string text;

    int frequencyarray [26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

    cout << "Enter Word: ";
    cin >> text;

//***************************COUNT OCCURANCES************************

    for (int i(0); i < text.length(); i++)
    {
        char c = text[i];

        c = toupper(c);
        c -= 65;

        if (c < 26 || c >=0)
        {
            frequencyarray[c]++;
            cout << frequencyarray[c];
        }
    }

    system ("pause");

return(0);

}`

2 个答案:

答案 0 :(得分:2)

如果您不想要运行总计,请不要在计算出现次数的周期内使用cout << freqencyarray[c];

答案 1 :(得分:0)

试试这个

#include <iostream> //for cout cin
#include <string>   //for strings
#include <fstream>  //for files
#include <algorithm>

using namespace std;

int main()
{       
    string text;

    int frequencyarray [26]={0};

    cout << "Enter Word: ";
    cin >> text;

//***************************COUNT OCCURANCES************************

    for (int i(0); i < text.length(); i++)
    {
        char c = text[i];

        c = toupper(c);
        c -= 65;

        if (c < 26 || c >=0)
        {
            frequencyarray[c]++;
        }
    }

    std::for_each(std::begin(frequencyarray), std::end(frequencyarray), [](int i)
    {
         std::cout << i << ",";
    });
    std::cout << "\n";
    system ("pause");

return(0);

}