Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;代码在code::Block上编译,但不在HackerRank上编译_C++_Arrays_Algorithm_Sorting - Fatal编程技术网

C++ C++;代码在code::Block上编译,但不在HackerRank上编译

C++ C++;代码在code::Block上编译,但不在HackerRank上编译,c++,arrays,algorithm,sorting,C++,Arrays,Algorithm,Sorting,这就是问题所在: 蝙蝠侠、超人和美国队长正在纽约第五大道的一幢大楼内搜寻一伙暴徒。为了避免寻找相同的地点,英雄们同意按如下方式搜索建筑物: 蝙蝠侠将开始寻找左边的第一栋建筑,然后向右移动一栋建筑 美国上尉将从右边的第一栋楼开始搜索,然后向左移动一栋楼 超人,因为他会飞,将应用二进制搜索算法来搜索建筑物。也就是说,他将首先在第五大道的中间搜索建筑物,然后向左或向右移动。 如果给定N个整数,按升序排序,表示建筑编号,然后是一个整数X,表示恶棍逃离的建筑,请创建一个程序,显示能够首先检测恶棍的英雄的姓

这就是问题所在:

蝙蝠侠、超人和美国队长正在纽约第五大道的一幢大楼内搜寻一伙暴徒。为了避免寻找相同的地点,英雄们同意按如下方式搜索建筑物:

蝙蝠侠将开始寻找左边的第一栋建筑,然后向右移动一栋建筑

美国上尉将从右边的第一栋楼开始搜索,然后向左移动一栋楼

超人,因为他会飞,将应用二进制搜索算法来搜索建筑物。也就是说,他将首先在第五大道的中间搜索建筑物,然后向左或向右移动。 如果给定N个整数,按升序排序,表示建筑编号,然后是一个整数X,表示恶棍逃离的建筑,请创建一个程序,显示能够首先检测恶棍的英雄的姓名,搜索最少的建筑。如果一些英雄同时找到了恶棍,他们的名字就会按字母顺序排列

输入格式:

整数N,后跟按升序排序的N个整数

约束条件

0

输出格式:

显示能够首先找到恶棍的英雄的名字,寻找最少的建筑。如果一些英雄同时找到了恶棍,他们的名字就会按字母顺序排列

样本输入0

9
20 30 40 50 60 100 200 500 1000
500
样本输出0

Captain America
问题结束了。这是我的代码:

#包括
#包括
使用名称空间std;
int n;
内部蝙蝠侠(内部arr[],内部x)
{
for(int p=0;p0;p--)
{
ecoount++;
如果(arr[p]==x)
返回电子帐户;
}
}
int超人(int arr[],int目标)
{
int first=0,last=n-1,mid,pos=-1,cont=0;
而(1>n;
int-arr[n];
对于(int i=0;i>arr[i];
}
int x;
cin>>x;
if(蝙蝠侠(arr,x)
所有这些实际上都是被视为错误的警告,因为一个
-Werror=return type
标志被传递给编译器

警告应该被严肃对待,在这种情况下,它们实际上是错误。不从声明为返回内容的函数返回任何内容是错误的

例如:

一旦修复了返回所有路径的函数,代码就应该编译

为完整起见,要在数组中查找元素,有
std::find
。它与迭代器一起工作,并使用常见约定在未找到元素时返回
end
迭代器:

#include <iterator>
#include <algorithm>
#include <iostream>
int main() {
    int arr[] = {1,2,3,4};
    auto it = std::find( std::begin(arr), std::end(arr), 3);

    if (it != std::end(arr))  std::cout << "index = " << it-std::begin(arr); 
    else std::cout << "not found";                              
}

是一个不标准的C++ C++,应该使用<代码> STD::vector < /COD>代替动态大小的数组。它是C中的一个特性,有些编译器将它作为C++的扩展。

可变长度数组在C11中是可选的,因此也不能指望C中的支持。如果我理解正确,那么VLAS在C中的整个点不是我们在C++问题中每天看到的,而是像“代码>空虚init(未签名n,未签名m,int a[n] [m ])< /> >(也不是C++中真正需要的东西)。它们在C++中是非常有用的,即使在C++中使用时,也会把它们放在与 Goto 的相同类别中,除了我已经看到VLA比 Goto 更有用的用法了。我还看到了VLA的更多用途,所以这可能不是一个与 Goto >的区别。注释不用于扩展讨论;对话已经结束。
int batman(int arr[], int x)
{
    for (int p = 0; p < n; p++)
    {
        if (arr[p] == x)
            return p;
    }
}
int batman(int arr[], int x)
{
    for (int p = 0; p < n; p++)
    {
        if (arr[p] == x)
            return p;
    }
    return -1;
}
#include <iterator>
#include <algorithm>
#include <iostream>
int main() {
    int arr[] = {1,2,3,4};
    auto it = std::find( std::begin(arr), std::end(arr), 3);

    if (it != std::end(arr))  std::cout << "index = " << it-std::begin(arr); 
    else std::cout << "not found";                              
}
cin >> n;
int arr[n];