Mon code fonctionne bien dans les blocs de code, mais, quand je l'envoie, il montre runtime sigabrt
erreur, que signifie cette erreur?erreur d'exécution (SIGABRT) - SPOJ
Lorsque j'initialise la taille du tableau de pointeurs en 200 cela fonctionne bien mais je veux savoir quelle est cette erreur?
lien pour la question est: http://www.spoj.com/problems/FCTRL2/
Voici le code:
#include <iostream>
using namespace std;
void multiply(int x,int *nums,int &len){
int carry=0;
int prod;
for (int j=0;j<len;j++){
prod=nums[j]*x+carry;
carry=prod/10;
nums[j]=prod%10;
}
while (carry){
nums[len]=carry%10;
carry=carry/10;
len++;
}
}
int main()
{
int t,n;
cin>>t;
int arr[100];
for (int i=0;i<t;i++){
cin>>arr[i];
}
for (int i=0;i<t;i++){
n=arr[i];
if (n==0){cout<<0<<endl;}
else{
int *nums= new int[0];
nums[0]=1;
int len=1;
for (int i=2;i<=n;i++){
multiply(i,nums,len);
}
for (int i=len-1;i>=0;i--){
cout<<nums[i];
}
cout<<endl;}
}
return 0;
}
'int * nums = new int [0]; nums [0] = 1; '- Soit vous n'avez pas vu cette erreur évidente, soit vous écrivez simplement du code et vous n'apprendrez pas la langue, juste pour la soumettre à SPOJ. – PaulMcKenzie
Non monsieur je demande quel type d'erreur est ce sigabrt ... Et comment il est lié à nums [0] –
Vous créez un tampon 0-élément, accédant ainsi à n'importe quel élément dans 'nums', y compris l'élément 0, est un comportement indéfini. – PaulMcKenzie