2017-05-22 15 views
0

私はこの質問のためのcodechef上の解決策として、コードを実行しようとしています:それは私のCMDに正しい出力をコンパイルして与えているけれども** https://www.codechef.com/problems/SIMDISHランタイムエラー:SIGSEGV

、まだそれが実行を示していCodechefの提出時に時間エラーが発生しました。私は問題のためにgoogledと私のコードで問題を見つけることができませんでした。 1つの制約は、私が使用することができません問題であり:Tは変数「ペア」で1≤T≤200、

#include <stdio.h> 
#include <string.h> 
#define INGREDIENT 4 

int main() 
{ 
    int pairs; 
    int c[INGREDIENT]={0}; 
    char ingredient1[INGREDIENT][11]; 
    char ingredient2[INGREDIENT][11]; 
    scanf("%d", &pairs); 
    int i,j,k; 
    for (i = 0; i < pairs; i++) 
    { 
     for (j = 0; j <INGREDIENT; j++) 
     { 
      scanf("%s", ingredient1[j]); 
     } 
     for (j = 0; j <INGREDIENT; j++) 
     { 
      scanf("%s", ingredient2[j]); 
     } 
     for (k = 0; k <4; k++) 
     { 
      for (j = 0; j < 4; j++) 
      { 
       if(strcmp(ingredient1[k], ingredient2[j]) == 0) 
        ++c[i]; 
      } 
     } 
    } 
    for (i = 0; i < pairs; i++) 
    { 
     if (c[i]>=2) 
     { 
      printf("similar\n"); 
     } 
     else 
      printf("dissimilar\n"); 
    } 
    return 0; 
} 

`

以下の私のコードで私はまた、他のソリューションを確認しました受け入れられているものの1つは私のものとかなり似ています。したがって問題を解決することはできません。これをチェックし、それが受け入れられる、と私に似て:友人へ

#include<stdio.h> 
#include<string.h> 
#include<math.h> 
//practice question 
int main() 
{ 
    int i,t,l,j,k,count=0; 
    scanf("%d",&t); 
    char name1[4][11]; 
    char name2[4][11]; 
    for(i=0;i<t;i++) 
    { 
     count=0; 
     for(j=0;j<4;j++) 
     { 
     scanf("%s",name1[j]); 
     } 
     for(j=0;j<4;j++) 
     { 
     scanf("%s",name2[j]); 
     } 

     for(k=0;k<4;k++) 
     { 
      for(j=0;j<4;j++) 
       { 
        l=strcmp(name1[k],name2[j]); 
        if(l==0) 
        { 
         count++; 
         break; 
        } 
       } 
     } 
     if(count>=2) 
     printf("similar\n"); 
     else 
     printf("dissimilar\n"); 
    } 
    return 0; 
    } 
+0

https://discuss.codechef.com/questions/7589/why-:私はまたして最後まで0 ::

int* c; c = (int*) calloc(pairs, sizeof(int)); 

配列cを初期化したいので、または、のcallocかもしれdo-i-get-a-sigsegv –

+0

こんにちは。はい、私はこれが初心者が受ける共通のエラーであることを認識したことを確認しました。しかし、まだ分かりませんでした。 –

答えて

0

おかげで、私はこの問題は私が

int c[INGREDIENT]={0}; where INGREDIENT = 4 

を宣言している。しかし、私は超えてアクセスしようとしているということですが分かりました4つの要素の限界、毎回変数「ペア」は使用する必要が4より大きい

for (i = 0; i < pairs; i++) 
{ 
    if (c[i]>=2) 

あり、このためのmalloc関数であってもよいです。

free(c);