我的格式非常糟糕,我很抱歉,但我还处于学习C ++的最初阶段。无论如何,无论我尝试什么,我总是在第51行得到预期的不合格ID错误。任何帮助将不胜感激!不,代码没有完成,它将于3月20日到期,只是想早点开始。这不是我想要格式化的方式,但这就是它在标题上的陈述。我对功能很陌生,所以是的,任何帮助都会很棒!
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int menu (int); //Menu prototype for 4 options
int main()
{
const int numWidth = 4;
int choice, pick;
cout << "Welcome! Please select your choice by entering 1, 2, 3, or 4!" << endl;
cout << "1:";
cout << right << setw(numWidth) << " Enter the Grades" << endl;
cout << "2:";
cout << right << setw(numWidth) << " Display the Grades" << endl;
cout << "3:";
cout << right << setw(numWidth) << " Show overall Grade" << endl;
cout << "4:";
cout << right << setw(numWidth) << " Exit the program" << endl;
cout << "Select your choice and press enter ";
cin >> choice;
pick = menu(choice);
cout << pick;
if (choice ==1)
{
cout << ". Please enter your grades.\n";
}
float AssignmentGrade(float, float, float, float); // Assignment Grade Prototype
{
float asgnment1, asgnment2, asgnment3, asgnment4, total;
cout << "First, enter your 4 assignment grades ";
cin >> asgnment1 >> asgnment2 >> asgnment3 >> asgnment4;
total = AssignmentGrade (asgnment1, asgnment2, asgnment3, asgnment4);
cout << total;
return 0;
}
}
float AssignmentGrade (float num1, float num2, float num3, float num4)
{
float asgnmentgrade;
asgnmentgrade = num1*0.05 + num2*0.05 + num3*0.05 + num4*0.05;
cout << "Total points, including weights, for assignment grade is ";
return asgnmentgrade;
}
float LabTestGrade (float, float, float); // Right here, line 51, is where I get expected unqualified ID error before {
{
float lab1, lab2, lab3, total;
cout <<"Next, please enter your 3 lab test scores!";
cin >> lab1 >> lab2 >> lab3;
total = LabTestGrade (lab1, lab2, lab3);
cout << total;
return 0;
}
float LabTestGrade (float lab1, float lab2, float lab3)
{
float LabGrade;
LabGrade = lab1*0.10 + lab2*0.10 + lab3*0.10;
cout << "Total points earned from lab tests is";
return LabGrade;
}
int menu (int num)
{
int option;
option = num;
cout <<"You have selected ";
return option;
}
答案 0 :(得分:1)
删除第51行中不必要的;
:float LabTestGrade (float, float, float);
不要忘记;
用于命令的结尾。如果定义函数,则不使用它。看看以下型号:
float function (float parameter) {
command();
command();
return 0;
}
编辑:第31行中的语法错误相同。
在;
float AssignmentGrade(float, float, float, float);
答案 1 :(得分:0)
除了@Nichar回答的原始无限制ID之外,你会发现自己遇到了这个函数的一些其他问题。
在第50行,你有:
float LabTestGrade (float, float, float) { // Function Code }
在第60行你有:
float LabTestGrade (float lab1, float lab2, float lab3) { // Function Code }
当您尝试使用完全相同的名称和参数定义另一个函数时,这将导致编译错误。 (重新定义错误)
虽然这些函数可能看起来略有不同,因为您已经将第二个参数(float lab1,float lab2,float lab3)命名为编译器,但它只会看到两个名称相同且函数相同的函数。类型作为参数。
话虽这么说,你可以删除第一个LabTestGrade()中的参数,因为它们实际上并没有在其函数中使用。
float LabTestGrade() { // Function Code }
最后,您还需要交换定义这两个函数的顺序。我建议谷歌搜索C ++ Scope,但基本上第一个LabTestGrade()正在调用第二个LabTestGrade(float lab1,lab2,lab3)。
total = LabTestGrade(lab1,lab2,lab3);
然而,第二个LabTestGrade尚未在您的程序中定义,因此它会尝试再次调用第一个LabTestGrade()并给您一个错误,因为第一个LabTestGrade()没有接受任何现在参数和这行代码试图将三个浮点数传递给一个不带任何内容的函数。
或者,您可以像在菜单功能中一样声明主函数上方的函数。
float LabTestGrade();
float LabTestGrade(float lab1, float lab2, float lab3);
int menu(int) // Menu prototype for 4 options
答案 2 :(得分:-1)
嗨,即使我是初学者,但我认为 -
首先 开头的菜单原型不正确。原型应该与函数本身完全相同。 正确的原型将是
int menu (int num);
在第51行中,在参数括号中,尝试编写您想要获取的浮点类型的全名。同时删除分号。例如: -
float LabTestGrade (float a , float b , float c) { }
在AssignmentGrade函数中犯了类似的错误,该函数需要4个浮点数。 尝试将全名写为参数。删除半结肠。
在main之外的开头分别编写函数原型。 您必须为您创建的每个函数创建一个单独的原型并记住 - 原型应该与函数具有相同的名称。只需要用半结肠替换花括号。
希望这有帮助。
编辑: - 您也可以尝试在main之外编写函数,然后在main之外的开头使用原型。