Răspuns :
Uite un exemplu cu adunarea a doua numere mari (ai programul in C++) :
#include<iostream>
#include<fstream>
#include<cstring>
#define NMAX 10001
using namespace std;
ifstream fin("suma.in");
ofstream fout("suma.out");
int n;
long a[NMAX],b[NMAX],s[NMAX];
void citire(long a[])
{
char sir[1001];
int i,k;
fin.getline(sir,1001);
k=strlen(sir);
a[0]=k;
for(i=k-1;i>=0;i--)
a[k-i]=sir[i]-'0';
}
void afisare(long a[])
{
int i;
cout<<a[0]<<' ';
for(i=a[0];i>0;i--) cout<<a[i];
cout<<'\n';
}
void adunare(long a[], long b[])
//a=a+b
{
int i,t=0;
for (i=1; i<=a[0] || i<=b[0] || t; i++)
{ t=a[i]+b[i]+t;
a[i]=t%10;
t=t/10;
}
a[0] = i - 1; // numărul de cifre
}
int main()
{
a[0]=1;a[0]=0;
s[0]=1;s[1]=0;
while(!fin.eof())
{
citire(a);
afisare(a);
adunare(s,a);
}
afisare(s);
fin.close();
fout.close();
return 0;
}
P.S.Numerele mari le poti memora sub forma unui vector,in care memorezi cifrele numarului.
#include<iostream>
#include<fstream>
#include<cstring>
#define NMAX 10001
using namespace std;
ifstream fin("suma.in");
ofstream fout("suma.out");
int n;
long a[NMAX],b[NMAX],s[NMAX];
void citire(long a[])
{
char sir[1001];
int i,k;
fin.getline(sir,1001);
k=strlen(sir);
a[0]=k;
for(i=k-1;i>=0;i--)
a[k-i]=sir[i]-'0';
}
void afisare(long a[])
{
int i;
cout<<a[0]<<' ';
for(i=a[0];i>0;i--) cout<<a[i];
cout<<'\n';
}
void adunare(long a[], long b[])
//a=a+b
{
int i,t=0;
for (i=1; i<=a[0] || i<=b[0] || t; i++)
{ t=a[i]+b[i]+t;
a[i]=t%10;
t=t/10;
}
a[0] = i - 1; // numărul de cifre
}
int main()
{
a[0]=1;a[0]=0;
s[0]=1;s[1]=0;
while(!fin.eof())
{
citire(a);
afisare(a);
adunare(s,a);
}
afisare(s);
fin.close();
fout.close();
return 0;
}
P.S.Numerele mari le poti memora sub forma unui vector,in care memorezi cifrele numarului.
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de ajutor, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și vă încurajăm să ne salvați în lista de favorite!