2014-12-25 3 views
0

Я новичок, и это моя первая проблема на Code Chef. Я запускаю свой код на своей машине, и он отлично работает, но после того, как я отправлю его на Code chef, я получаю эту ошибку Runtime Error (SIGSEGV). Я использую слишком много памяти для проблемы, или я неправильно вношу входные данные?Ошибка выполнения (SIGSEGV) для кода в CodeChef

Вот мой код,

#include <iostream> 
#include <stdio.h> 
using namespace std; 
#include <math.h> 
#define D(a,b) fabs(a-b) 
#define Q(x1,y1) (sqrt((x1)*(x1)+(y1)*(y1))) 
#define min(a,b) (a>b?a:b) 
#include <cstdlib> 
int main() 
{ 
    long int i,k,testno,cones; 
    double N[1000],dmid,r,R,x1,y1,temp=0; 

    cin >> testno; 
    for(i=0;i<testno;i++){ 
     cin >> r >> R; 
     dmid=D(r,R)/2; 
     cin >> cones; 
     for(k=0;k<3;k++){ 
      cin >> x1 >> y1; 
      if(Q(x1,y1)>dmid){ 
       N[k]= R-Q(x1,y1); 
      } 
      else{ 
       N[k]=Q(x1,y1)-r; 
      } 
     }  
     for(k=0;k<cones-1;k++){ 
      temp=min(N[k],N[k+1]); 
     } 
     printf("%.3f",temp); 
     cout << endl; 
    }  
    return 0; 
} 

И ссылка на вопрос: http://www.codechef.com/problems/COURSE EDIT: Брус поверить, что я сделал такую ​​смешную ошибку. В любом случае, я отредактировал код, но все равно получаю ту же ошибку.

+1

Вы не просматриваете значения r и R! – Nullpointer

+0

Что вы узнали при отладке кода? Неинициализированные значения переменных? –

+1

@ πάντα ῥεῖ Я получал это изначально для массива N, но после присвоения ему размера я не получил эту ошибку. – Timelapse

ответ

-1

Вы написали ...

for(k=0;k<3;k++) 

считая, что всегда будет конусы. Но это неправильно. Вы приняли конусов в качестве входных данных. Так эта линия должна быть,

for(k=0;k<cones;k++) 

С помощью этого издания вы избавиться от Runtime Error. Но, честно говоря, ваше текущее решение находится далеко от правильного решения. Вы можете прочитать редакцию этой проблемы с this link, чтобы получить правильную идею. Удачи. :)

Смежные вопросы