2017-06-06 4 views
-3

die Frage: - https://www.codechef.com/JUNE17/problems/NEO01Getting einen Laufzeitfehler auf dem folgenden Code

Meine Lösung, die ich nach der richtigen Lösung der oben genannten Frage sein soll, aber ich bin immer wieder eine RTE bekommen.

https://ideone.com/COnlog

#include<stdio.h> 
int main() 
{ 
    long arr[10000]; 
    int t,n,p=0; 
    scanf("%d",&t); 

    while(t--) 
    { 
     long hap1=0,hap2=0; 
     scanf("%d",&n); 
     for(int i=0;i<n;i++) 
     { 
      scanf("%d",&arr[i]); 
     } 

     for(int i=0;i<n;i++) 
     { 
      if(arr[i]>=0) 
      { 
       hap1+=arr[i]; 
       p++; 
      } 
      else 
      { 
       hap2+=arr[i]; 
      } 
     } 
     printf("%d\n",hap1*p+hap2); 
    } 
    return 0; 
} 

Edit: Sorry, ich bin ein Anfänger, der in der Regel cout und cin verwendet, verwendet scanf und printf Zeit zu sparen, und nur vergessen & hinzufügen, während scanf verwenden.

Obwohl mein Code funktioniert gut auf Dev-C++ 5.11 zeigt es einen Laufzeitfehler (SIGSEGV) und ich habe keine Ahnung, warum es passiert.

+1

Sie müssen mehr über die Verwendung von ['scanf'] (http://en.cppreference.com/w/c/io/fscanf) erfahren. Ich empfehle [ein gutes Anfängerbuch zum Lesen zu finden] (http://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list), um zu lernen, C zu programmieren, anstatt Sites wie Codechef zu benutzen. –

+0

Fügen Sie einige Fehlerprüfung hinzu. Zu Beginn gibt 'scanf' einen Wert zurück, der angibt, ob die richtige Anzahl an Werten gefunden wurde. Ohne Ihre Eingabe ist es ziemlich schwer für jemanden, genau zu wissen, wo Ihr Programm versagt, also sollten Sie das wenigstens zu Ihrer Frage hinzufügen. –

+0

Korrigiert, immer noch ein Fehler RE (SIGSEGV) mit Codechef IDE. –

Antwort

0

Sie verwenden scnaf nicht korrekt. Ändern scanf("%d",t);

+0

Korrigiert, immer noch ein Fehler RE (SIGSEGV) mit Codechef IDE. –

0

Die Einschränkung für N in dem Problem ist 1 ≤ N ≤ 10^5, also müssen Sie eine [Größe], ​​Größe = 10^5 deklarieren.