每次我为我的c++程序提供大量输入集时,我的DOS都会崩溃
My DOS crashes everytime I gave large input set for my C++ program
我用c++写了一段代码,并尝试使用MinGW和TDMGCC编译器进行编译。它可以很好地编译。但是,当我试图使用这些编译器生成的。exe文件时,问题发生了,我给我的程序一个大的输入集,我的dos停止工作,并说windows已经停止工作。点击OK后,它终止了我的执行。我怎样才能修好它呢?这是我的代码
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int t,n,k,c,x,w;
ofstream myfile;
myfile.open ("example.txt");
cin>>t;
for(w=1;w<=t;w++)
{
cin>>n>>k>>c>>x;
int a[n],b[n],array[n][n];
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
array[i][j]=(a[i]*i+b[j]*j+c)%x;
}
}
int re[1000],z=0;
if(k>1){
for(int i=1;i+k-1<=n;i++)
{
for(int j=1;j+k-1<=n;j++)
{
re[z]=array[i][j]+array[i][j+1]+array[i+1][j]+array[i+1][j+1];
z++;
}
}}
else
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
re[z]=array[i][j];
z++;
}
}
}
int lar=re[0];
for(int i=1;i<z;i++)
{
if(re[i]>lar)
lar=re[i];
}
myfile<<"Case #"<<w<<": "<<lar<<endl;
}
myfile.close();
return 0;
}
你有一个基本的差一错误:
int a[n],b[n],array[n][n];
for(int i=1;i<=n;i++)
cin>>a[i];
a
的长度为n
,表示有效指标介于0
和n-1
之间。您正在写入索引n
的值,该值已经过了结束。
像这样构造你的循环:
for (int i = 0; i < n; i++)
cin >> a[i];
你所有的循环都显示了这个问题。
另外,就像@NathanOliver说的,使用std::vector
代替可变长度数组(VLA)。VLA在C标准中,但在c++中没有。所以这里的用法是非标准的。只需添加#include <vector>
并替换
int a[n];
std::vector<int> a(n);
相关文章:
- 无论我使用什么,我的输入都会被跳过
- 我的程序没有从文件中读取并输入数据
- 如何反转我的输入,包括否定
- 为什么 IDE 无法识别我的输入?
- 在我的输入中没有空格的情况下,程序工作正常?C++
- 如何使用我的输入制作构造函数?
- 使用 crontab 运行 C++ 程序,"cin"不会等待我的输入
- 如何理解C++常见问题中的"程序忽略我的输入请求"?
- 如何在我的c版本Tic-Tac-Toe中修复我的输入验证
- 我的输入是否正确写入我的数组
- 为什么我的程序不断进入我的输入验证循环
- 如何让这个数组填充我的输入值
- IsAlpha函数不接受我的输入
- 为什么我的输入流无法打开我的文件?C++
- localtime()和gmtime()似乎把我的输入流C++/C搞砸了
- 将文件读取到向量中,我的输入函数有什么问题?
- 我的输入文件中没有读取C++空间
- 计数排序我的输入是1,4,3,1但输出是垃圾值1,1,3输入不正确
- 为什么char[1]从我的输入文件中读取整个单词
- 无法读取 c++ 中的 txt 文件.我不断收到我的输入文件失败文本.谁能帮我弄清楚要解决什么