在Codechef上提交解决方案后,出现运行时错误。我可以在我的机器上用代码块编译和执行解决方案。请检查密码,告诉我出了什么问题。
问题定义-
此问题的所有提交都可用。
在一家公司,雇员的报酬如下:
如果他的基本工资低于1500卢比,那么HRA=基本工资的10%,DA=基本工资的90%。
如果他的工资等于或高于1500卢比,则HRA=500卢比,DA=基本工资的98%。如果员工的工资是输入的,则编写一个程序来查找他的总工资。
注:工资总额=基本工资+HRA+DA
输入
第一行包含整数T,即测试用例的总数。然后跟随T行,每行包含一个整数工资。
输出
输出员工的工资总额。
约束条件
1≤T≤1000
1≤工资≤100000
例子
输入

一千二百零三
一万零四十二
一千三百一十二
输出
二千四百零六
二万零三百八十三点二
二千六百二十四
我的解决方案-

#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变量是从用户/测试脚本读取的,并且不能保证小于10。因此,一旦超过这个值,就会出现索引越界和内存冲突。

关于c - CodeChef-运行时错误(SIGSEGV),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32654435/

10-11 21:17