C++ Hackerrank中的错误比较三元组代码

C++ Hackerrank中的错误比较三元组代码,c++,compiler-errors,triplet,C++,Compiler Errors,Triplet,我在做hackerrank的三重求和问题,我发现了这些错误,但我不知道为什么会出现这些错误。有没有人能提供一些关于它的更多见解,如果可能的话,链接一个关于我应该阅读的主题的视频,以便至少获得正确的代码 代码 #include <iostream> using namespace std; int compareTrip(int a[],int b[]) { int i=0,result1=0,result2=0; for(i=0;i<3;i++) {

我在做hackerrank的三重求和问题,我发现了这些错误,但我不知道为什么会出现这些错误。有没有人能提供一些关于它的更多见解,如果可能的话,链接一个关于我应该阅读的主题的视频,以便至少获得正确的代码

代码

#include <iostream>
using namespace std;
int compareTrip(int a[],int b[])
{
    int i=0,result1=0,result2=0;
    for(i=0;i<3;i++)
    {
        if(a[i]>b[i])
        result1++;

        if(a[i]<b[i])
        result2++;

        else {
        return 0;
        }
    }
}
int main()
{
    int i,a[3],b[3];
    for(i=0;i<3;i++)
    {
        cin>>a[i];
    }
    for(i=0;i<3;i++)
    {
        cin>>b[i];
    }
    compareTrip(a[], b[]);

}
  • 你应该使用
    compareTrip(a,b)而不是
    compareTrip(a[],b[])当您传递参数时
  • 主函数应该返回一些值,因为它是整数类型
    int main()
    。 希望能有帮助

  • 出现前两个错误是因为编译器认为您正在尝试重新定义数组
    a
    b
    ,您已经在
    main
    的开头初始化了这些数组。调用
    compareTrip()
    时,只需将这些数组的名称作为两个参数传入即可

    错误
    控件到达非无效函数的末尾
    表示在第18行的函数末尾没有返回值。因此,在
    compareTrip()
    中有一组if/else语句,但可能会得到两个整数数组,其中
    a
    b
    之间不匹配,并且函数不考虑这种情况。如果发生这种边缘情况,我们会发现自己处于一个无限循环中,因为函数将离开
    for
    语句,并且永远不会返回
    。因为
    return
    值是一个int,所以您希望在for循环之外的最后一个结束括号
    }
    之前包含一个
    return语句
    ,以避免无限循环

    <>你开始学习更多关于C++和它的基本语法的在线课程,比如,和。我相信前两个是免费的,第三个可以让你从免费试用开始。学习愉快

    静态列表compareTriplets(列表a、列表b){
    
    static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
    
        List<Integer> points=new ArrayList<Integer>(2); ;
        
        int apoint=0,bpoint=0;
        
        for(int i=0;i<3;i++)
        {
            if(a.get(i)>b.get(i))
            {
                apoint++;
            }
            else if(a.get(i)<b.get(i))
            {
                bpoint++;
            }
            else
            {
    
            }
        }
        points.add(0,apoint);
        points.add(1,bpoint);
        return points;
    
    }
    
    列表点=新阵列列表(2); int apoint=0,bpoint=0; for(int i=0;ib.get(i)) { apoint++; }
    else if(a.get)(i)欢迎使用堆栈溢出。为了更牢固地掌握基础知识,您应该做一些简单的练习。前两个错误是关于将数组作为参数传递;请尝试
    compareTrip(a,b)第三是关于函数的返回值;它应该返回一些东西,但是它不返回。一个介绍性C++文本覆盖了这个。<代码>主< /Cord>函数有一个隐式<代码>返回0;< /C>如果没有提供一个。<代码> CoprReTeS/<代码>函数有一个代码路径,可以在没有“代码”>的情况下到达函数的结尾。打开
    。但是我已经添加了条件,否则在上述条件不匹配的情况下返回零。为什么它仍然给我错误?我也删除了前两个错误,但仍然没有显示任何答案。您认为这段代码中可能有什么错误?非常感谢您的帮助。为什么是无限循环?这真的会发生吗?
    static List<Integer> compareTriplets(List<Integer> a, List<Integer> b) {
    
        List<Integer> points=new ArrayList<Integer>(2); ;
        
        int apoint=0,bpoint=0;
        
        for(int i=0;i<3;i++)
        {
            if(a.get(i)>b.get(i))
            {
                apoint++;
            }
            else if(a.get(i)<b.get(i))
            {
                bpoint++;
            }
            else
            {
    
            }
        }
        points.add(0,apoint);
        points.add(1,bpoint);
        return points;
    
    }