【问题标题】:CodeChef - Runtime error(SIGSEGV)CodeChef - 运行时错误(SIGSEGV)
【发布时间】:2015-09-18 14:24:51
【问题描述】:

我在 Codechef 上提交解决方案后遇到运行时错误。我可以在我的机器上编译和执行代码块中的解决方案。请检查代码,让我知道出了什么问题。

问题定义 -

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

在公司中,员工的薪酬如下: 如果他的基本工资低于卢比。 1500,则 HRA = 基本工资的 10%,DA = 基本工资的 90%。 如果他的薪水等于或高于卢比。 1500,然后 HRA = 卢比。 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;
}

【问题讨论】:

  • 您遇到了哪个错误?
  • 请发布minimal reproducible example,并使用适当的缩进/格式。
  • @Olaf 在 Codechef 上成功提交,但出现运行时错误(SIGSEGV)

标签: c codeblocks


【解决方案1】:

第一个循环中的 i 变量正在索引一个包含 10 个元素的数组,它从 0 到 t-1,而 t 变量是从用户/测试脚本中读取的,并且不能保证小于比10。所以一旦超过了,你就会得到一个超出范围和内存违规的索引。

【讨论】:

  • 我明白你的意思。我已经相应地修改了代码,但仍然遇到相同的运行时错误。
  • 1) 永远不要编辑与答案或评论相关的代码,因为它实际上会使该答案无效。 2) 现在更糟了,因为数组的长度为零。
【解决方案2】:

该解决方案现已被接受。这个问题有一个限制

1≤T≤1000

我将代码修改为 int arr1[1000] 和 double arr2[1000] 并被接受。

感谢您的帮助!

【讨论】:

  • 在如此感谢的方式是接受有用的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多