C++ Hackerrank中的错误比较三元组代码
我在做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++) {
#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;
}