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.
Natija

Fikrlar bolsa marhamat
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
Нет комментариев