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

Errors in Hackerrank compare the triplets code

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

代码

#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[]);

}

错误

Solution.cpp:30:19: error: expected primary-expression before ‘]’ token
     compareTrip(a[], b[]);
                   ^
Solution.cpp:30:24: error: expected primary-expression before ‘]’ token
     compareTrip(a[], b[]);
                        ^
Solution.cpp: In function ‘int compareTrip(int*, int*)’:
Solution.cpp:18:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
  1. 在传递参数时,您应该使用 compareTrip(a,b); 而不是 compareTrip(a[], b[]);
  2. 您的主函数应该 return 一些值,因为它是整数类型 int main()。 希望对你有帮助。

前两个错误的发生是因为编译器认为您正在尝试重新定义数组 ab,您已经在 main 的开头初始化了它们.当您调用 compareTrip() 时,您只需将这些数组的名称作为两个参数传入。

错误control reaches end of non-void function表示第18行函数末尾没有return值。所以你在[=13=中有一组if/else语句] ,但您可能会得到两个整数数组,其中 ab 之间没有匹配项,并且该函数不考虑这种情况。如果这种极端情况发生,我们会发现自己陷入了无限循环,因为函数会离开 for 语句而永远不会离开 return。因为 return 值是一个 int,所以您希望在 for 循环之外,在最后一个右括号 } 之前包含一个 return statement,以避免无限循环。

您可以通过 https://www.learncpp.com/,, https://www.sololearn.com/Course/CPlusPlus/, and https://www.codecademy.com/learn/learn-c-plus-plus 等在线课程开始更多地了解 C++ 及其基本语法。我相信前两个是免费的,第三个让您可以免费试用。学习愉快!

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;

}