可变大小的阵列分拣机无缘无故地窃听
Variable size array sorter bugging with no reason
我正在编写一个算法,要求用户告诉数组的大小,然后是值。之后,代码对值进行排序并返回结果。代码如下:
#include <iostream>
#include <string>
using namespace std;
int nvals, k, var, size;
void mysort(int arrayy[]){
int i,j;
int temp;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
if(arrayy[j]>arrayy[j+1]){
temp=arrayy[j];
arrayy[j]=arrayy[j+1];
arrayy[j+1]=temp;
}
cout << "Your sorted array is: [";
for(i=1;i<10;i++) cout<<arrayy[i]<<", ";
cout << "].n";
}
void main(int argc){
cout << "Number of variables" << endl;
cin >> size;
int *arrayy;
arrayy = new int[size];
for (int iii=0;iii<size;iii++){
cout << "Enter number:" << endl;
cin >> var;
arrayy[iii] = var;
}
mysort(arrayy);
}
不幸的是,编译后,它输出Your sorted array is: [
然后突然崩溃!我一直试图操纵事情,看看我是否可以让它发挥作用,但我没有成功。如何修复代码以使其正常工作?谢谢。
让我们假设size == 4
.
您最终将设置j == 3
,然后访问arrayy[j]
和arrayy[j+1]
。此时访问arrayy[j+1]
会引起未定义的行为,因为它位于数组外部。
将所有"10"条目替换为"size",您将获得所需的内容:
#include <iostream>
#include <string>
using namespace std;
int k, size;
void mysort(int arrayy[]){
int i,j;
int temp;
for(i=0;i<size;i++)
for(j=0;j<size;j++)
if(arrayy[j]>arrayy[j+1]){
temp=arrayy[j];
arrayy[j]=arrayy[j+1];
arrayy[j+1]=temp;
}
cout << "Your sorted array is: [";
for(i=1;i<=size;i++) {
if (i<size){
cout<<arrayy[i]<<",";
}
else
cout<<arrayy[i];
}
cout << "].n";
}
void main(int argc){
cout << "Number of variables" << endl;
cin >> size;
int *arrayy;
arrayy = new int[size];
for (int iii=0;iii<size;iii++){
cout << "Enter number:" << endl;
cin >> arrayy[iii];
}
mysort(arrayy);
}
另外,我添加了一些格式化行,以便您的数组可以在第二个括号附近很好地格式化。
相关文章:
- 从C++本机插件更新Vector3数组
- GCC本机矩阵运算库
- VC++本机单元测试,找不到调试符号
- 在这种情况下,java对象是否可以调用本机函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 无法将标准库导入本机 android 项目中的头文件
- 使用本机 C++ 应用程序中的 C# 代码
- 在nodejs中使用本机代码的最佳方法是什么?
- 如何告诉本机节点模块所需的dll存储在哪里?
- OpenGL 在 VMWare Fusion 版本 10.1.3 上安装的虚拟机 (Ubuntu 16.04) 上崩溃
- 当我使用CHAR_INFO结构时,控制台会无缘无故地改变颜色
- 在自定义程序中使用本机 Windows 自然顺序排序
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- MS 本机单元测试 - 断言::线程失败不起作用
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 如何在使用 Boost MSM 编写的状态机中直接访问任何状态
- Winapi - SetWindowLongPtr in ShutdownBlockReason创建/销毁JNI本机代码
- C++/CLI 混合托管/本机 DLL 不起作用
- 调用函数时,变量突然无缘无故地更改