CodeChef - 运行时错误(SIGSEGV)
CodeChef - Runtime error(SIGSEGV)
我在 Codechef 上提交解决方案后出现运行时错误。我可以在我的机器上的代码块中编译和执行解决方案。请检查代码,让我知道哪里出了问题。
问题定义 -
此问题的所有提交都可用。
在公司中,员工的薪酬如下:
如果他的基本工资低于卢比。 1500,那么HRA=基本工资的10%,DA=基本工资的90%。
如果他的工资等于或高于卢比。 1500,然后 HRA = Rs。 500 和 DA = 基本工资的 98%。如果输入的是Employee的工资,写个程序求他的工资总额。
注意:总工资 = 基本工资 + HRA + DA
输入
第一行包含一个整数T,测试用例总数。然后是 T 行,每行包含一个整数薪水。
输出
输出员工的工资总额。
约束条件
1≤T≤1000
1≤工资≤100000
例子
输入
3
1203
10042
1312
输出
2406
20383.2
2624
我的解决方案 -
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr1[10];
double arr2[10];
int t,t1;
int i,j;
float HRA,DA,GS;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&arr1[i]);
}
i=0;
t1=t;
while(t>0)
{
if(arr1[i]<1500)
{
HRA=(0.1*arr1[i]);
DA=(0.9*arr1[i]);
GS=(arr1[i]+HRA+DA);
arr2[i]=GS;
}
if(arr1[i]>=1500)
{
HRA=500;
DA=(0.98*arr1[i]);
GS=(arr1[i]+HRA+DA);
arr2[i]=GS;
}
i++;
t--;
if(i==t1)
break;
}
for(j=0;j<i;j++)
{
printf("\n%g",arr2[j]);
}
return 0;
}
第一个循环中的 i
变量正在索引一个包含 10 个元素的数组,它从 0 到 t-1
,而 t
变量是从 user/test 脚本并且不保证小于 10
。所以一旦超过了,就会出现索引越界和内存冲突。
解决方案现已被接受。这个问题有一个约束
1≤T≤1000
我将代码修改为 int arr1[1000] 和 double arr2[1000],它被接受了。
感谢您的帮助!
我在 Codechef 上提交解决方案后出现运行时错误。我可以在我的机器上的代码块中编译和执行解决方案。请检查代码,让我知道哪里出了问题。
问题定义 -
此问题的所有提交都可用。
在公司中,员工的薪酬如下: 如果他的基本工资低于卢比。 1500,那么HRA=基本工资的10%,DA=基本工资的90%。 如果他的工资等于或高于卢比。 1500,然后 HRA = Rs。 500 和 DA = 基本工资的 98%。如果输入的是Employee的工资,写个程序求他的工资总额。
注意:总工资 = 基本工资 + HRA + DA 输入
第一行包含一个整数T,测试用例总数。然后是 T 行,每行包含一个整数薪水。 输出
输出员工的工资总额。 约束条件
1≤T≤1000 1≤工资≤100000 例子
输入
3 1203 10042 1312
输出
2406 20383.2 2624
我的解决方案 -
#include <stdio.h>
#include <stdlib.h>
int main()
{
int arr1[10];
double arr2[10];
int t,t1;
int i,j;
float HRA,DA,GS;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&arr1[i]);
}
i=0;
t1=t;
while(t>0)
{
if(arr1[i]<1500)
{
HRA=(0.1*arr1[i]);
DA=(0.9*arr1[i]);
GS=(arr1[i]+HRA+DA);
arr2[i]=GS;
}
if(arr1[i]>=1500)
{
HRA=500;
DA=(0.98*arr1[i]);
GS=(arr1[i]+HRA+DA);
arr2[i]=GS;
}
i++;
t--;
if(i==t1)
break;
}
for(j=0;j<i;j++)
{
printf("\n%g",arr2[j]);
}
return 0;
}
第一个循环中的 i
变量正在索引一个包含 10 个元素的数组,它从 0 到 t-1
,而 t
变量是从 user/test 脚本并且不保证小于 10
。所以一旦超过了,就会出现索引越界和内存冲突。
解决方案现已被接受。这个问题有一个约束
1≤T≤1000
我将代码修改为 int arr1[1000] 和 double arr2[1000],它被接受了。
感谢您的帮助!