我的程序出了什么问题?基本C ++

时间:2011-09-19 00:32:33

标签: c++

我的任务说:

  

---通过将计算分组为函数来重写程序。特别是,您应该至少引入以下功能:

     

---一个名为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'

中计算字符数

4 个答案:

答案 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”。

复制并粘贴它,不要重新输入它。

编辑:已修复错误消息