ЕХ
Екатерина Хольманн

Сложение двух длинных положительных чисел

Требуется реализовать подпрограммы считывания, вывода и сложения двух длинных положительных чисел. Хранение длинных чисел следует организовать с использованием массивов.

спасибо)) ) но в паскале ABC не работает штука эта

АГ
Андрей Гусев

#include
using namespace std;
class dl
{ char* u;
int s;
int r;
public:
dl():s(1),r(3) { u=new char[r]; u[0]='0'; u[2]=u[1]=0; }
dl(char* x);
dl(int n) { u=new char[r=n]; s=u[0]=0; }
~dl() { delete [] u; r=s=0; u=NULL; }
void sets();
dl& operator=(const char* x);
friend ostream& operator << (ostream& out,const dl& a) { out << a.u; return out; }
void addp(const dl& x,const dl& y);
};
void dl::sets()
{
for(s=0;s < r;) if(!u[++s]) break;
}
dl::dl(char* x)
{ int i=0;
for(r=0;x[r++];); s=r-1;
if(x[0]!='-') r++;
u=new char[r];
for(;i-s;u[ i ]=x[i++]);
for(;i-r;u[i++]=0);
}
dl& dl::operator=(const char* x)
{ int i=0;
for(r=0;x[r++];); s=r-1;
if(x[0]!='-') r++;
delete [] u;
u=new char[r];
for(;i-s;u[ i ]=x[i++]);
for(;i-r;u[i++]=0);
return(*this);
}
void dl::addp(const dl& x,const dl& y)
{
int j,i,k,s=x.s>y.s?x.s:y.s; r=s+1;
char* a=new char[r];
char* b=new char[r];
char* c=new char[r];
for(i=0;i-r;a[ i ]=b[ i ]=c[i++]='0');
for(i=r-1,j=x.s-1;j>=0;a[i--]=x.u[j--]);
for(i=r-1,j=y.s-1;j>=0;b[i--]=y.u[j--]);
for(i=r-1,k=0;i>=0;) j=a[ i ]+b[ i ]-96+k,c[i--]=j % 10+48,k=j/10;
for(k=0;k-r+1;k++) if(c[k]!='0') break;
s=r-k;
delete [] u;
u=new char[s+2];
for(i=0;k-r;u[i++]=c[k++]);
for(r=s+2;i-r;u[i++]=0);
sets();
delete [] a,b,c;
}

int main()
{
dl a,b,c;
a="12383457843590845984359843576930560376874657464685068548654836946540";
b="24353453453464356456767875768686867867867855434344646433";
c.addp(a,b);
cout << a << "+" << b << "=" << c << endl;
return 0;
}

Похожие вопросы
Циклический алгоритм Дано 5 чисел. Найти сумму положительных чисел
Сложение и умножение 2-вуичных чисел! Прошу помощ!
паскаль найти сумму двух длинных чисел
C++ сложение 2-х чисел
Математика. КР "Сложение и вычитание положительных и отрицательных чисел"
сложение двух положительных чисел Pascal ABC
Количество нечетных положительных чисел
сложение неслучайных и случайных чисел
Найти максимальное из двух чисел.
сложени и вычетание смешанных чисел