该程序假设计算输入的数字,字(即Abc,fish ...)大写字母和最长字长。 我无法正确编写代码来识别字数和输入的字母数。当我运行它时,只看到的数字似乎有效,我不知道如何使程序计数输入最长的单词。我在正确的轨道上?非常感谢任何帮助!
我的代码:
'#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main(){
char s = '0';
char sentinel = '.';
int countWords = 0;
int countDigits = 0;
int countLetters = 0;
int countUppers = 0;
cout << "Enter your string: " << endl;
while (cin >> s){
if (isdigit(s)){
countDigits++;
}
else if (isupper(s)){
countUppers++;
}
else if (isspace(s)){
countWords++;
}
cout << "# of Digits: " << countDigits << endl;
cout << "# of Uppers: " << countUppers << endl;
cout << "# of Words: " << countWords << endl;
cout << "Longest word length" << countLetters << endl;
}
system("PAUSE");
}
/*getline(cin, s);
const int size = s.length();
cout << "The total number of characters entered is: " << size << endl;*/'
答案 0 :(得分:1)
在这里,这是一个如何解决问题的示例。希望你觉得它很有用。
#include <iostream>
#include <string>
#include <vector>
#include <cctype>
#include <algorithm>
bool IsNumber(const std::string _str)
{
return !_str.empty() && std::find_if(_str.begin(),_str.end(), [](char c) { return !std::isdigit(c); }) == _str.end();
}
bool IsUpper(const std::string _str)
{
return !_str.empty() && std::find_if(std::begin(_str), std::end(_str), [](char c) { return !(std::isupper(c)); }) == _str.end();
}
int main()
{
std::vector<std::string> listInputs;
std::string input;
const int numberOfInputs = 5;
std::cout << "Input 5 different stuff. Words, Uppercase words, digits..." << std::endl << std::endl;
for (size_t i = 0; i < numberOfInputs; ++i)
{
//ask the question
std::cout << "Input " << i+1 << ": " << std::flush;
std::cin >> input;
std::cout << std::endl;
listInputs.push_back(input);
}
//check some shit
int countWords = 0;
int countDigits = 0;
int countLetters = 0;
int countUppers = 0;
int longestWordSize = 0;
for (const auto& i : listInputs)
{
//check if its a digit
if (IsNumber(i))
{
++countDigits;
}
else
{
longestWordSize = (i.length() > longestWordSize) ? i.length() : longestWordSize;
++countWords;
countLetters += i.length();
if (IsUpper(i))
{
++countUppers;
}
}
}
std::cout << std::endl << "######## THE RESULT BABY ########" << std::endl << std::endl;
std::cout << "Number of words found: " << countWords << std::endl;
std::cout << "Number of Digits found: " << countDigits << std::endl;
std::cout << "Number of uppercase words found: " << countUppers << std::endl;
std::cout << "The longest word length was: " << longestWordSize << std::endl;
std::cin.get();
return 0;
}