2016-02-05 39 views
-3
#include <string> 
#include <iostream> 
using namespace std; 

float CalcAvgClassGrade(int s1, int s2, int s3, int s4, int s5) 

{ 
    float avg,sum; 

    // Sum grades, and get avg 
    sum = s1 + s2 + s3 + s4 + s5; 
    avg = sum/2; 
    return avg; 
} 

string getMax (int s1, int s2, int s3, int s4, int s5, string n1, string n2, string n3, string n4, string n5) 
{ 
    float max; 
    string maxName; 
    // Compares each grade to find the max 
    max = s1; 
    maxName = n1; 
    if(max < s2) 
     {max = s2; 
    maxName = n2; 
     } 
    if(max < s3) 
     {max = s3; 
    maxName = n3; 
     } 
    if (max < s4) 
    {max = s4; 
     maxName = n4; 
    } 
    if (max < s5) 
     {max = s5; 
    maxName = n5; 
    } 


      return maxName; 

} 

float getMin (int s1, int s2, int s3, int s4, int s5, string n1, string n2, string n3, string n4, string n5) 
{ 

    float max; 
    string minName; 
    // Compares each grade to find the min 
    min = s1; 
    minName = n1; 
    if(min < s2) 
     { min = s2; 
     minName = n2 ;} 
    if(min < s3) 
     { min = s3; 
    minName = n3} 
    if (min < s4); 
    { min = s4; 
     minName = n4} 
    if (min < s5) 
     { min = s5; 
    minName = n5 
} 
    return minName; 


} 



int main() 
{ 
    string student1, student2, student3, student4, student5; 
    int student1Grade, student2Grade, student3Grade, student4Grade, student5Grade; 
    float class_avg; 
    // Enter Student Names; 
    cout << "Enter Student Name: " ; 
    cin >> student1; 
    cout << "Enter Student Grade: " ; 
    cin >> student1Grade; 

    cout << "Enter Student Name: " ; 
    cin >> student2; 
    cout << "Enter Student Grade: " ; 
    cin >> student2Grade; 

    cout << "Enter Student Name: " ; 
    cin >> student3; 
    cout << "Enter Student Grade: " ; 
    cin >> student3Grade; 

    cout << "Enter Student Name: " ; 
    cin >> student4; 
    cout << "Enter Student Grade: " ; 
    cin >> student4Grade; 

    cout << "Enter Student Name: " ; 
    cin >> student5; 
    cout << "Enter Student Grade: " ; 
    cin >> student5Grade; 
6 
    // Class AVG 
    classAvg = f_CalcAvgClassGrade(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade,); 

    cout << "Class average = "<< classAvg 

    // MAX GRADE 

    classMax = s_getMax(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade, student1, student2, student3, student4, student5) 

    cout << classMax << " has the highest grade in the class" 

// Min Grade 

    classMin = s_Min(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade, student1, student2, student3, student4, student5) 
cout << classMin <<" has the lowest grade in the class" 

    } 

我试图建立一个程序,宣布班的平均水平,顶级学生和底层学生。我在编译器中遇到了很多错误。这是我第一次使用C++进行编码,所以我一直在挑选语法时遇到一些麻烦。任何人都可以在这找到任何错误?C++计算与返回相关名称的最大值和最小值

+0

你可以张贴的错误消息。突出的东西是一行中的流水线“6”,并且你没有使用你定义的函数的名字。另外,这不是如何计算五个数字的平均值。 – molbdnilo

+1

使用数组(矢量)可能会有所帮助。 – Jarod42

回答

1

我将你的代码包含在我的IDE中。以下错误显示对我说: 缺少类型声明:

int myInt = 0; 
myNotTypedVariable = myInt; 

不会工作,因为你需要定义一个变量的类型,然后才能建造它。之后,值的分配发生。 正确:

int myInt = 0; 
int myNowTypedVariable = myInt; 

如果你使用像新标准的C++ 0x你也可以使用:

auto myInt = 0; 
auto myNowTypedVariable = myInt; 

错误的返回类型:类型要返回必须声明返回类型相匹配的变量的功能。

int function() 
{ 
    return ""; 
} 

正确会是这样的:

int function() 
{ 
    return 1; 
} 

你缺少一些 “;”分配后。

您的解决方案也非常脆弱。只要你需要添加一个新学生,你就需要改变函数签名和这些函数的实现。您可能要考虑使用列表。 你的“字符串”是标准库的一部分,所以你应该也可以使用矢量。 实施例如何使用载体:

#include <vector> 
#include <string> 
using namespace std; 
int function(const vector<string>& student_names) 
{ 
    for(int i = 0; i < student_names.size(); ++i) 
    { 
     cout << "Student Name: " << student_names.at(i) << endl; 
    } 
    return student_names.size(); 
} 
int main() 
{ 
    vector<string> students; 
    students.push_back("a"); 
    students.push_back("b"); 
    students.push_back("c"); 
    students.push_back("d"); 
    if(function(students) == 4) 
    { 
     return 0; 
    } 
    return 1; 
} 

的std ::在这种情况下矢量是一个模板,并且可以用于各种类型的存储。如果你需要一个整数列表,然后写vector<int>

vector<int> values; 
values.push_back(1); 
int value = var.at(0); 

将返回整数1

0

以下是更正代码。错误评论正确。

#include <string> 
#include <iostream> 
using namespace std; 

float CalcAvgClassGrade(int s1, int s2, int s3, int s4, int s5) 

{ 
    float avg, sum; 

    // Sum grades, and get avg 
    sum = s1 + s2 + s3 + s4 + s5; 
    avg = sum/2; 
    return avg; 
} 

string getMax(int s1, int s2, int s3, int s4, int s5, string n1, string n2, string n3, string n4, string n5) 
{ 
    float max; 
    string maxName; 
    // Compares each grade to find the max 
    max = s1; 
    maxName = n1; 
    if (max < s2) 
    { 
     max = s2; 
     maxName = n2; 
    } 
    if (max < s3) 
    { 
     max = s3; 
     maxName = n3; 
    } 
    if (max < s4) 
    { 
     max = s4; 
     maxName = n4; 
    } 
    if (max < s5) 
    { 
     max = s5; 
     maxName = n5; 
    } 


    return maxName; 

} 

string getMin(int s1, int s2, int s3, int s4, int s5, string n1, string n2, string n3, string n4, string n5) //returnig float instead of string 
{ 

    float min; 
    string minName; 
    // Compares each grade to find the min 
    min = s1; // min was not defined 
    minName = n1; 
    if (min < s2) 
    { 
     min = s2; 
     minName = n2; 
    } 
    if (min < s3) 
    { 
     min = s3; 
     minName = n3; //should use semicolon to stop the statement 
    } 
    if (min < s4); 
    { 
     min = s4; 
     minName = n4;//should use semicolon to stop the statement 
    } 
    if (min < s5) 
    { 
     min = s5; 
     minName = n5;//should use semicolon to stop thestatement 
    } 
    return minName; 

} 



int main() 
{ 
    string student1, student2, student3, student4, student5; 
    int student1Grade, student2Grade, student3Grade, student4Grade, student5Grade; 
    float class_avg; 
    // Enter Student Names; 
    cout << "Enter Student Name: "; 
    cin >> student1; 
    cout << "Enter Student Grade: "; 
    cin >> student1Grade; 

    cout << "Enter Student Name: "; 
    cin >> student2; 
    cout << "Enter Student Grade: "; 
    cin >> student2Grade; 

    cout << "Enter Student Name: "; 
    cin >> student3; 
    cout << "Enter Student Grade: "; 
    cin >> student3Grade; 

    cout << "Enter Student Name: "; 
    cin >> student4; 
    cout << "Enter Student Grade: "; 
    cin >> student4Grade; 

    cout << "Enter Student Name: "; 
    cin >> student5; 
    cout << "Enter Student Grade: "; 
    cin >> student5Grade; 
    // 6 what is this ? 
     // Class AVG 
    float classAvg = CalcAvgClassGrade(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade); //function name was wrong and classAvg was not defined. only 5 arguements will be accepted by this function so the use comma after fifth arguement will cause error 

    cout << "Class average = " << classAvg; //should use semicolon to stop the statement 

     // MAX GRADE 

    string classMax = getMax(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade, student1, student2, student3, student4, student5); //function name was wrong and classMax was not defined. should use semicolon to stop the statement 

    cout << classMax << " has the highest grade in the class"; //should use semicolon to stop the statement 

     // Min Grade 

    string classMin = getMin(student1Grade, student2Grade, student3Grade, student4Grade, student5Grade, student1, student2, student3, student4, student5); //function name was wrong and classMin was not defined. should use semicolon to stop every statement 
    cout << classMin << " has the lowest grade in the class"; //should use semicolon to stop the statement 

} 

主要的错误是与代码注释。保持工作和改进。 所有最优秀的

0

使用数组(矢量)和算法:

#include <algorithm> 
#include <string> 
#include <iostream> 
#include <vector> 

float CalcAvgClassGrade(const std::vector<int>& grades) 
{ 
    const auto sum = std::accumulate(grades.begin(), grades.end(), 0); 
    return static_cast<float>(sum)/grades.size(); 
} 

std::string getMax(const std::vector<int>& grades, const std::vector<std::string>& names) 
{ 
    auto it = std::max_element(grades.begin(), grades.end()); 
    return *(names.begin() + std::distance(grades.begin(), it)); 
} 

std::string getMin(const std::vector<int>& grades, const std::vector<std::string>& names) 
{ 
    auto it = std::min_element(grades.begin(), grades.end()); 
    return *(names.begin() + std::distance(grades.begin(), it)); 
} 

int main() 
{ 
    std::vector<std::string> students(5); 
    std::vector<int> studentGrades(5); 

    for (int i = 0; i != 5; ++i) 
    { 
     // Enter Student Names; 
     std::cout << "Enter Student Name: "; 
     std::cin >> students[i]; 
     std::cout << "Enter Student Grade: "; 
     std::cin >> studentGrades[i]; 
    } 
    const float classAvg = CalcAvgClassGrade(studentGrades); 
    std::cout << "Class average = " << classAvg << std::endl; 

    const std::string classMax = getMax(studentGrades, students); 
    std::cout << classMax << " has the highest grade in the class\n"; 

    const std::string classMin = getMin(studentGrades, students); 
    std::cout << classMin << " has the lowest grade in the class\n"; 
} 

Demo

相关问题