gpt4 book ai didi

c++ - 运行时错误 :SIG SEGV

转载 作者:行者123 更新时间:2023-11-28 00:34:30 25 4
gpt4 key购买 nike

我在热门编码网站 codechef 上提交名为“Money Transformation”的问题时遇到问题。每次我提交解决方案时,我都会收到运行时错误名称 SIG SEGV。经过一些搜索在谷歌上我发现这是某种段错误..我尝试了 Codechef 的常见问题解答中给出的所有可能的解决方案但无法正确解决..而且这个错误必须是编译器特定的我在我的机器上使用 CodeBlock(12.1)它的 minigw 编译器和我的程序运行得很好..请帮助我理解问题并解决它..下面是我的程序(在我根据 codechef 的常见问题解决方案对其进行编辑之后)

#include <iostream>

using namespace std;
int i=0;
class money
{
public:
int a[101],b[101];
money()
{
for(int t=0;t<102;t++)
{
a[101]=0;
b[101]=0;
}
}
};
money m;
void swp(int &a,int &b)
{
int temp=0;
temp=a;
a=b;
b=temp;
}
int maximum()
{
int x=0;
m.a[100]=m.a[0];
m.b[100]=m.b[0];
for(int j=1;j<=(i+1);j++)
{
if(m.a[j]>m.a[100])
{
m.a[100]=m.a[j];
m.b[100]=m.b[j];
x=j;
}
if(m.a[j]==m.a[100])
{
if(m.b[i]>m.b[100])
{
m.a[100]=m.a[j];
m.b[100]=m.b[j];
x=j;
}

}
}
return x;
}
void moneytransform(int a,int b,int c)
{
m.a[0]=a;
m.b[0]=b;
while(true)
{
if(c>m.b[i]&&m.a[i]>0)
{
m.a[i+1]=m.a[i]-1;
m.b[i+1]=m.b[i]+100-c;
}
else
{
m.a[i+1]=m.a[i];
m.b[i+1]=m.b[i]-c;
}
swp(m.a[i+1],m.b[i+1]);
if((m.b[i]<c&&m.a[i]==0)||(m.a[i+1]>100||m.b[i+1]>100))
{
return;
}
i++;
}

}

int main()
{
int T,A,B,C,M;
do
{
cin>>T;
}while(T>40);
int noc=1;
while(noc<=T)
{
do
{
cin>>A>>B>>C;
}while(A<0&&B<0&&C<0&&A>100&&B>100&&C>100);
moneytransform(A,B,C);
M=maximum();
cout<<M;
noc++;
}
return 0;
}

codechef 问题的链接是.. http://www.codechef.com/problems/MONTRANS/

最佳答案

在你的货币构造函数中你有

money()
{
for(int t=0;t<102;t++)
{
a[101]=0;
b[101]=0;
}
}

您访问了数组边界之外的 a[101]。该数组的大小为 101,因此有效索引为 0-100。无论如何,您可能打算做其他事情,没有必要一遍又一遍地将 0 写入同一个地方。

您的错误可能完全来自不同的地方,但这个错误很明显。正如公理所指出的,您应该在调试器中运行您的程序。

关于c++ - 运行时错误 :SIG SEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21495242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com