Я хотел вычесть два массива символов, которые имеют числовые значения. Я делаю это, потому что хочу вычесть большие числа. Когда я скомпилирую эту программу, она не показывает никаких ошибок, но при выполнении ее сбоя. я пытался сделать следующим образом псевдокодвычесть 2 числа, используя массивы символов
foreach character(right2left)
difference=n1[i]-n2[i]//here suppose they are integers
if(difference<0)
{
n1[i-1]--;
difference+=10;
}
result[i]=diff;
Я написал псевдокод для ясности.
int subtract(char *n1,char *n2,int n1Len,int n2Len){
int diff;
int max=n1Len;
char* res = (char*)malloc (max+2);
memset(res, '0', max +1);
res[max] = '\0';
int i=n1Len - 1, j = n2Len - 1, k = max;
for (; i >= 0 && j >=0; --i, --j, --k) {
if(i >= 0 && j>=0)
{
diff=(n1[i]-'0') - (n2[i]-'0') ;
if(diff<0)
{
int temp=n1[i-1]-'0';
temp=temp-1;
n1[i-1]=temp+'0';
diff+=10;
}
res[i]=diff+'0';
}
else
res[i]=n1[i];
}
return atoi(res);
}
int main(void) {
int t=subtract("55","38",2,2);
printf("%d\n", t);
}
Почему бы вам не использовать класс bignum? –
Что означает 'not run'? Он не компилируется? Он не дает результатов, которые вы хотите? или Он работает, но падает? Пожалуйста, просто не сбрасывайте код на нас и заставляйте нас находить это. Это ваша проблема, поэтому я четко и четко расскажу о вашей проблеме. –
Как? если он продвинут, я не должен его использовать. Этот код для кого-то, кто является таким новичком в C. – Nickool