【发布时间】:2020-06-20 13:23:13
【问题描述】:
当我尝试在我的程序中使用 assert 函数时,它会转储代码并给出运行时错误。谁能告诉我我的代码有什么问题?
#include <bits/stdc++.h>
using namespace std;
int main() {
long long int a;
cin>>a;
while(a--)
{
long long int a,b;
cin>>a>>b;
long long int arr[a];
long long int arr1[a];
long long int z=b;
long long int sum[z];
for(int i=0;i<z;i++)
{
sum[i]=0;
}
for(int i=0;i<a;i++)
{
cin>>arr[i];
}
for(int i=0;i<a;i++)
{
cin>>arr1[i];
}
for(int i=0;i<a;i++)
{
assert(arr[i]>b);
assert(arr[i]<1);
assert(arr1[i]>50);
assert(arr1[i]<0);
}
for(int i=1;i<=b;i++)
{
for(int j=0;j<a;j++)
{
if(arr[j]==i)
{
sum[i-1]=sum[i-1]+arr1[j];
}
}
}
sort(sum,sum+z);
long long int c[z]={0};
long long int j=0;
for(int i=0;i<z;i++)
{
if(sum[i]!=0)
{
c[j]=sum[i];
j++;
}
}
cout<<c[0];
}
return 0;
}
输入: 1 6 4 1 2 3 3 2 2 7 3 9 1 1 1
输出:prog: prog.cpp:30: int main(): Assertion `arr[i]>b' failed.
【问题讨论】:
-
你知道
assert做什么吗?它告诉您arr中的某些值不大于b。您有示例输入,您应该能够找出arr和b中的值。 -
是的,我知道它的作用,这就是我使用它的原因。我这里用它来满足问题约束的要求。
-
在这种情况下,它按设计工作,您的代码中没有什么需要修复的。您的输入数据不正确。
标签: c++ runtime-error sigabrt