Debug Assertion Failed错误

ma328762444 2009-08-01 10:01:44

#include<iostream>
using namespace std;
//利用附加数组重排数组元素
template<class T>
void Rearrange(T *&a, int n, int r[])
{//按序重排数组a中的元素,使用附加数组u
T *u = new T[n+1];
//在u中移动到正确的位置
for (int i=0; i<n; i++)
{
u[r[i]] = a[i];
delete []a;
}
//移回到a中
for (int i=0; i<n; i++)
{
a[i] = u[i];
delete []u;
}
};
//计算名次
template<class T>
void Rank(T a[], int n, int r[])
{// Rank the n elements a[0:n-1].
for (int i = 0; i < n; i++)
r[i] = 0; // initialize
// compare all element pairs
// Visual complains if we say int i again
for (int i = 1; i < n; i++)
{
for (int j = 0; j < i; j++)
{
if (a[j] <= a[i]) r[i]++;
else r[j]++;
}
}
};

//Swap函数
template<class T>
inline void Swap(T&a, T&b)
{
T temp = a;
a = b;
b = temp;
};
//主函数
void main()
{
int n = 5;
int *x = new int[5];
int y[5] = {5, 9, 2, 7, 0};
for (int i=0; i<n; i++)
x[i] = y[i];
int r[]={0, 0, 0, 0, 0};
Rank(x, n, r);
cout << "x中各元素的名次为" ;
for (int i=0; i<5; i++)
cout << r[i] << ' ';
Rearrange(x, n, r);
cout << "重排后的数组为";
for (int i=0; i<5; i++)
cout <<r[i] << ' ';
}
调试没错误 运行就出现了如题错误 高手帮忙给改一下 我起初为了使delete []a 的原因 但是去掉那一行错误依旧。希望大家帮忙看一下。
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jackyjkchen 2009-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ma328762444 的回复:]
希望能更详细点。是代码错误,还是什么?最好有一个直接的解决方案。这也叫帮人帮到底。不过还是谢一下楼上的了。
[/Quote]

你这是断言错误,某一步的数据非法了,只在debug模式下才会出,必须跟踪才能发现真正的错误
ma328762444 2009-08-01
  • 打赏
  • 举报
回复
希望能更详细点。是代码错误,还是什么?最好有一个直接的解决方案。这也叫帮人帮到底。不过还是谢一下楼上的了。
jackyjkchen 2009-08-01
  • 打赏
  • 举报
回复
单步跟一下就知道错在哪一步了

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧