2011-04-26 93 views
-1

变量或字段`letterGrade'声明为void。这个错误信息将在函数'letterGrade'的最后一次迭代中出现。任何人有一个想法为什么?如果“变量或字段”被声明为void,那么这是什么意思?错误消息帮助

#include <string> 
#include <iostream> 
using namespace std; 
void letterGrade (int score, string& scoreLetter); 
string scoreLetter; 
int main() 
{ 
    int score; 
    char A, B, C, D, F; 
    cout<<"Enter the grade: "; 
    cin>> score; 
    letterGrade (score, scoreLetter); 
    cout<<"The letter grade is a(n) "<< scoreLetter<<"."; 
    system ("pause"); 
    return 0; 
} 
void letterGrade (score, scoreLetter) 
{ 
    for (score >= 90) 
    { 
      scoreLetter = 'A';} 
     if (score == 100) 
    { 
      scoreLetter.insert (1, "+"); 
    } 
    else if (8<=score% 10 && score% 10 <= 9) 
    { 
        scoreLetter.insert (1, "+"); 
    else if (0<=score% 10 && score% 10 <=1) 
    { 
        scoreLetter.insert (1, "-"); 
    } 
+1

你是什么意思?在最后一次迭代中?还有什么其他的你没有向我们展示过,比如回归声明? – 2011-04-26 15:26:10

+0

另外,我假设这是功课?如果是这样,它应该被标记为这样。 – 2011-04-26 15:27:23

回答

1

你是不是对letterGrade定义的参数命名的类型。

1
void letterGrade (score, scoreLetter) 
{ 
    //... 

在函数定义上面,你忘了指定类型。提及类型为:

void letterGrade (int score, std::string & scoreLetter) 
{    // ^^^this ^^^^^^^^^^^^^this 
    //... 

别忘了#include<string>


另一个问题是这样的:

for (score >= 90) 

for的形式应该是这样的:

for(initialization; condition ; increment/decrement/changing-some-value) 

实施例:

for (int i = 0 ; i <= score ; i++) 
+0

好的时候,我得到错误信息,“预期”;“ '之前')令牌。“这是什么意思。它表明错误出现在第一个'for'函数中。 – Mike 2011-04-26 15:30:47

+0

另外,'for'是完全错误的,必须是固定的(: – 2011-04-26 15:30:47

+0

我看,第一次使用和我完全忘记了这些参数应该如何工作@Doug T.,注意到了,我调整了它并使用了一个'如果'功能。谢谢大家,感谢帮助。 – Mike 2011-04-26 15:51:32

0

首先,作为其他说 - 修复letterGrade定义:

    vvv  vvvvvvvvvvvv 
void letterGrade(int score, std::string& scoreLetter) 

之后,修复for,它应该是这样的:

for (; score >= 90; --score) 
{ 
    //.. 
} 

此外,您在letterGrade

0

你实际上是在循环的阴影全球scoreLetter笔记letterGrade函数?

像这样的大多数家庭作业只需要一个if-then-elseif-else阶梯。

我建议您删除for声明并替换为if声明。如果您决定需要循环或重复,请恢复for声明。

一个for循环将使你遍历得分表与等级字符串:可使用std::lower_boundstd::upper_bound功能进行

struct Grade_Score 
{ 
    unsigned int grade; 
    const char * grade_text; 
}; 

const Grade_Score grade_table[] = 
{ 
    {100, "A+"}, 
    {90, "A"}, 
    {80, "B"}, 
    {70, "C"}, 
    {60, "D"} 
}; 
const unsigned int NUM_GRADE_ENTRIES = 
    sizeof(grade_table)/sizeof(grade_table[0]); 

std::string Grade_To_Score(unsigned int grade) 
{ 
    std::string score = "F"; 
    for (i = 0; i < NUM_GRADE_ENTRIES; ++i) 
    { 
     if (grade >= grade_table[i].grade) 
     { 
      score = grade_table[i].grade_text; 
      break; 
     } 
    } 
    return score; 
} 

类似的搜索。

编辑1:
我建议你的东西更便携像更换system("pause");

cout << "Press Enter to continue\n"; 
cout.ignore(10000, '\n'); 

并非所有平台都支持pause命令。