Katta sonlarni qo'shish

Salom.Bugun men bu maqolamda katta sonlar ustida amallardan biri bo'lgan qo'shishni korib chiqamiz.
Albatta ikki son qoshish uchun a+b ning ozi yetarli, lekin katta sonlarda bu narsa ishni qiyinlashtiradi.Katta sonlarda ham huddi shu amalni qollaymiz lekin bowqacharoq ko'rinishda, ya'ni katta sonlarni mayda bo'laklarga ajratib qo'shib chiqamiz.



#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <vcl.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
 {
int  s=0,i=0,n,m,k;
string a1,b1;
cout<<"  MUSBAT   ko'p honali sonlarni QO'SHISH \n";
cout<<"Birinchi sonni kiriting:\n a= ";
cin>>a1;
cout<<"Ikkinchi sonni kiriting:\n b= ";
cin>>b1;
n=a1.length();
m=b1.length();
int *a=new int [n+1];
int *b=new int [m+1];
int *c=new int [n+m+5];

for(int i=1;i<=n;i++)
    a[i]=int(a1[i-1])-48;

for(int i=1;i<=m;i++)
    b[i]=int(b1[i-1])-48;

if(n>m) k=n; else k=m;
 while(i!=k+1)
 { 
    i++;
     //cout<<i;
    //agar birinchi kiritgan sonning uzunligi ikkinchidan katta bolsa
    if(n>0&&m==0) s+=a[n--];
    //ikkinchi son uzunligi katta bolsa birinchidan
    if(n==0&&m>0) s+=b[m--];
    //agar ikalasiyam teng bolsa
    if(n>0&&m>0) s+=a[n--]+b[m--];
    c[i]=s%10;
    //agar ikki sonnni qoshgan paytda 9 dan katta son chiqsa 
    if(s>9) s=1; else s=0;
 }
   cout<<" Natija: ";

 if(c[i]==0) i-=1;// c[i]=0 bo'lsa uni pechat qilmaydi;
 for(int j=i; j>0;j--)
      cout<<c[j];
 delete[]a;
 delete[]b;
 delete[]c;

 getch();

         return 0;
 }

Natija

Fikrlar bolsa marhamat

Нет комментариев