计算数组中大于下一个元素的元素



为什么给出错误的计数在这个问题中,我们必须找出有多少个元素比数组
#include的下一个元素大使用命名空间std;

int main() {
//number of testcases
int t;
cin>>t;
while(t--){
//taking number of elements in an array
int n,count;
cin>>n;
//taking array
int a[n];
count=0;
for(int i=1;i<=n;i++){
cin>>a[n];
}
//checking array 
for(int j=1;j<=n-1;j++){

if(a[j]>a[j+1])
{
count++;
}

}
cout<<count<<endl;
}
return 0;
}

输入51 2 3 4 1预期的输出1通过以上代码输出2

有几个问题使用您的代码:

问题1

您将超出数组a的边界,这将导致未定义行为,当你写

cin >> a[n];  //undefined behavior 

注意,数组的索引从0开始,而不是c++中的1

问题2

在标准c++中,数组的大小必须是编译时常量。这意味着以下代码是不正确的:

int n;
cin>>n;
int a[n];   //NOT STANDARD C++ BECAUSE n IS NOT A CONSTANT EXPRESSION

最好使用std::vector而不是内置数组。

int n = 0;
std::cin >> n;
std::vector<int> a(n);   //this creates a vector of size n
//take input from user
for(int& element: a)
{
std::cin >> element;
} 
int count = 0;
for(int i = 0; i< n - 1; ++i)
{
if(a[i] > a[i+1])
{
++count;
}
}

相关内容

最新更新