如何有效地计算字母字符?

时间:2018-02-25 19:30:46

标签: c++

我初始化了一个字符数组,以放置所有大写和小写字母。

#include <iostream>
using namespace std;

int main () {
    char c;
    int cnt = 0;
    cout << "Enter 0 to view the results " << endl;
    char arr[52] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
    while (1) {
        for (int i = 0; i < 100000000; i++)
        {
            cin >> c;
            if (c == arr[i]){
                cnt++;
            }
            else if (c == '0'){
                break;
            }
            else{
                cout << "Please enter only characters!" << endl;
            }
        }
        if (c == '0')
            break;
    }
    cout << cnt << endl;
    return 0;
}

我知道这段代码效率低下。

  • 如何在没有break;的情况下编写此代码?
  • 如果没有使用数组,有更好的方法,请提及它。

1 个答案:

答案 0 :(得分:0)

OP的问题非常不清楚,但我从评论中理解的是OP试图找到一种更简单/类似的方法来计算某人的小写/大写字母数字输入,并继续这样做,直到用户输入0,我在线查看我找到了一个更好的方法并进行了一些调整,这是非常直接的,现在它在下面。

#include <algorithm>
#include <iostream>
#include <cctype>
#include <string>

using namespace std;

int main()
 {
    string s = "TEST";
    while(s != "0"){    
        cout << " Enter text: ";
        getline(cin, s);
        size_t count_alpha = count_if(s.begin(), s.end(), 
            [](unsigned char ch) { return isalpha(ch); });
        cout << "Alphabets: " << (  count_alpha)<<endl ;
    }
}