2010-02-10 4 views
1
#include<stdio.h> 
#include<iostream> 
#include<string> 
#include<string.h> 
using namespace std; 
char arr[200],res[200]; 
char table[150][200]; 

string multiply(char n[],int m) 
{ 
    int N=strlen(n),M,temp=0,x=0; 
    for(int i=0;i<N;i++) 
     arr[i]=n[N-1-i]; 
    for(int i=0;i<N;i++) 
    { 
     x=m*(arr[i]-'0')+temp; 
     x=m*(arr[i]-'0')+temp; 
     arr[i]=(x%10)+'0'; 
     temp=x/10; 
    } 
    while(temp>0) 
    { 
     arr[N]=(temp%10)+'0'; 
     temp/=10; 
     N++; 
    } 
    M=strlen(arr); 
    for(int i=0;i<M;i++) 
     res[i]=arr[M-1-i]; 
} 
void make_table() 
{ 
    table[0][0]='1'; 
    for(int i=1;i<101;i++) 
    { 
     multiply(table[i-1],i); 
     int u=strlen(res); 
     for(int j=0;j<u;j++) 
     { 
      table[i][j]=res[j]; 
     } 
    } 
} 
int main() 
{ 
    int tc,n; 
    scanf(" %d",&tc); 
    make_table(); 
    while(tc--) 
    { 
     scanf(" %d",&n); 
     printf("%s\n",&table[n]); 
    } 
    return 0; 
} 

C'est mon code pour ce problème: http://www.spoj.pl/problems/FCTRL2/ Il génère des réponses correctes pour moi, mais quand je le soumets, il me dit erreur d'exécution (erreur de segmentation). Quelqu'un peut-il m'expliquer quelle est la faute de segmentation? parce que je l'ai lu sur le site Web de spoj et je n'ai pas compris comment l'éviter et comment mettre à jour mon code?Quelqu'un peut-il me dire pourquoi mon code génère une segmentation sur SPOJ? et ce qui est l'erreur de défaut de segmentation (FCTRL2)

Répondre

2

Si vous remplacez le type de retour de la multiplication de la fonction string-void du segfault est parti.

Une erreur de segmentation se produit lorsque vous essayez de lire/écrire de la mémoire à laquelle vous n'avez pas accès. Par exemple, vous pouvez essayer d'écrire en lecture seule ou de lire à l'adresse 0x00000000. Une méthode courante pour réaliser des segavires consiste à utiliser un pointeur non initialisé. Un débogueur est souvent une bonne aide pour trouver un défaut de segmentation, car il s'arrêtera et vous montrera où est arrivé.

+0

Eh bien mon mal ... Merci: D ça a marché – magiix

+0

si vous savez quoi d'autre pourrait générer un défaut de seg, pouvez-vous me éclairer? – magiix

Questions connexes