我的任务说:
---通过将计算分组为函数来重写程序。特别是,您应该至少引入以下功能:
---一个名为toLowerCase的函数,它将一个字符作为输入参数并返回一个字符。除非输入是大写字母,否则返回的值应与输入相同,在这种情况下,返回的值应该是与该字母等效的小写。
---另一个名为toLowerCase的函数,这个函数将一个字符串作为输入参数并返回一个字符串。返回的字符串应与输入相同,只是所有大写字母都已转换为小写。
----一个名为readText的函数,它接受一个字符串作为输出参数(没有返回值),并从cin读取多行输入,直到命中输入结束或遇到空行。 (注意:readText不应该向cout写任何东西。)
----一个名为countCharacter的函数,它接受两个参数作为输入并返回一个整数。第一个输入参数是字符串,第二个输入参数是字符。返回值应该是字符串中出现字符的时间数(如果字符在字符串中不存在,则为零)。这个函数应该按照所有合法字符的描述工作(即,即使这个程序只用它来计算小写字母,它应该适用于小写字母,大写字母,标点符号等) 在介绍每个函数时,通过调用新函数来替换main()中的代码。
我一直收到错误:在char之前预期的primary-expression
#include<iomanip>
#include<iostream>
#include<string>
using namespace std;
void readText(string& text);
void toLowercase(string& text);
void countcharacter(string& text, char []);
char ToLowerCase();
int main (int argc, char** argv)
{
string userinput; //Initialize string name userinput
cout << "Enter text to be analyzed, ending with an empty line or end-of-input:" << endl;
readText(userinput); //Read text from user
cout << "You've entered: \n" << userinput << '\n'; // Read input, line by line, until end of input or an empty line
toLowercase(userinput); //Output user input and if upper-case, convert to lower-case
cout << "Lower case version of what you said: \n" << userinput << '\n';
countcharacter(userinput); //Count characters in userinput
ToLowerCase();
return 0;
}
void readText(string& text)
{
string line;
getline (cin, line);
while (cin && line != "")
{
text = text + line + "\n";
getline (cin, line);
}
/*for(std::string line; getline(std::cin, line) && !'\n' ; )
input += line + '\n'; */
}
void toLowercase(string& text)
{
const int ucLcOffset = 'a' - 'A';
for (int i = 0; i < text.size(); ++i)
{
char c = text[i];
if (c >= 'A' && c <= 'Z')
text[i] = text[i] + ucLcOffset;
}
}
void countcharacter(string& text, char c)
{
// Count and report on each alphabetic character
int totalCount = 0;
for (c = 'a'; c <= 'z'; ++c)
{
// Count how many times c occurs in the text
int charCount = 0;
for (int i = 0; i < text.size(); ++i)
{
if (text[i] == c)
++charCount;
}
// report on character c
cout << c << ":" << charCount << " " << flush;
if ((c - 'a') % 10 == 9)
cout << "\n";
totalCount = totalCount + charCount;
}
// How many characters are left over?
cout << "\nother:" << text.size() - totalCount << endl;
}
char ToLowerCase()
{
char c = 'A';
char Conversion;
const int ucLcOffset = 'a' - 'A';
if (c >= 'A' && c <= 'Z')
Conversion = c + ucLcOffset;
cout << "Your conversion for character A is: " << Conversion << '\n';
}
第28行错误。 “countcharacter(userinput); //在userinput'
中计算字符数答案 0 :(得分:1)
该行:
#inlcude<iostream>
应该是:
#include <iostream>
语法高亮显示是你的朋友。
另外...... countcharacter()
有两个参数:
void countcharacter(string& text, char []);
但你只提供一个:
countcharacter(userinput);
答案 1 :(得分:1)
#inlcude<iostream>
你拼错了include
。
countcharacter(userinput); //Count characters in userinput
countcharacter()
有两个参数,而不是一个。
您似乎想要计算每个小写字符('a'
- 'z'
)的出现次数。在这种情况下,您不需要将第二个参数传递给countcharacter()
。变化:
void countcharacter(string& text, char []);
到
void countcharacter(string& text);
和
void countcharacter(string& text, char []);
到
void countcharacter(string& text);
您还必须在char c
中声明countcharacter()
。
您似乎也应该将char ToLowerCase()
更改为void ToLowerCase()
,因为您似乎没有返回任何内容。
答案 2 :(得分:0)
我不是C ++专家,而是
行void countcharacter(string& text, char []);
似乎缺少参数名称。
答案 3 :(得分:0)
将您输入的确切代码发布到编译器。对于你发布的内容,你不会得到“错误:期望在char之前的primary-expression”,你会得到“错误:无效的预处理指令#inlcude”。
复制并粘贴它,不要重新输入它。
编辑:已修复错误消息