CodeChef - 运行时错误(SIGSEGV)

时间:2015-09-18 14:24:52

标签: c codeblocks

我在Codechef上提交解决方案后出现运行时错误。我可以在我的机器上的代码块中编译和执行解决方案。请检查代码并告诉我有什么问题。

问题定义 -

此问题的所有提交均可用。

在一家公司中,一个emplopyee支付如下: 如果他的基本工资低于卢比。 1500,然后HRA =基本工资的10%,DA =基本工资的90%。 如果他的薪水等于或高于卢比。 1500,然后HRA = Rs。 500和DA =基本工资的98%。如果输入了员工的工资,请写一个程序来查找他的工资总额。

注意:总薪水=基本工资+ 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;
}

2 个答案:

答案 0 :(得分:1)

第一个循环中的i变量索引一个包含10个元素的数组,它从0到t-1,而t变量从用户/测试脚本中读取不保证小于10。所以一旦它不止于此,你就会得到一个超出界限和内存违规的索引。

答案 1 :(得分:1)

现在已接受解决方案。问题有一个约束

1≤T≤1000

我将代码修改为int arr1 [1000]并加倍arr2 [1000]并且它被接受了。

感谢您的帮助!