欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C++使用string的大數(shù)乘法運(yùn)算(3)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

本次項(xiàng)目目標(biāo):使用C++完成對于大數(shù)的乘法運(yùn)算,供大家參考,具體內(nèi)容如下

項(xiàng)目要點(diǎn)

1.大數(shù)指的是遠(yuǎn)超long long int的數(shù)據(jù)

2.將大數(shù)用矩陣進(jìn)行存儲,并通過矩陣實(shí)現(xiàn)運(yùn)算

3.本人采用字符串進(jìn)行存儲,應(yīng)注意char的特點(diǎn)

比如:char a=161;

cout<<(int)a;

此時會輸出-95,而不是161,char類型首個比特位是作為正負(fù)號的

乘法,此處為整數(shù)乘法,正整數(shù),負(fù)整數(shù),0均可,主要思想就是乘法的筆算方法

運(yùn)行截圖及代碼如下:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
#define n 10
string dezero(string a)//用來去掉正數(shù)前面的0,也就是說可以輸入000001類似這樣的數(shù)字
{
 long int i;
 for(i=0;i<a.length();i++)
 {
 if(a.at(i)>48) break;
 }
 if(i==a.length()) return "0";
 a.erase(0,i);
 return a;
}
string multiply(string a,string b)//整數(shù)
{
 long int i,j,k,yao=0,kai;
 string c1,c2;
 string c3=a+b;
 if(a.at(0)=='-')
 {
 a.erase(0,1);
 yao++;
 }
 if(b.at(0)=='-')
 {
 b.erase(0,1);
 yao++;
 }
 a=dezero(a);
 b=dezero(b);
 if(a.at(0)==48||b.at(0)==48) return "0";
 if(a.length()>b.length())
 {
 c1=a;
 c2=b;
 }
 else
 {
 c1=b;
 c2=a;
 }
 reverse(c1.begin(),c1.end());
 reverse(c2.begin(),c2.end());
 for(i=0;i<c2.length();i++)
 {
 if(c2.at(i)>=48&&c2.at(i)<=57) c2.at(i)-=48;
 if(c2.at(i)>=97&&c2.at(i)<=122) c2.at(i)-=87;
 }
 for(i=0;i<c1.length();i++)
 {
 if(c1.at(i)>=48&&c1.at(i)<=57) c1.at(i)-=48;
 if(c1.at(i)>=97&&c1.at(i)<=122) c1.at(i)-=87;
 }
 for(i=0;i<c3.length();i++) c3.at(i)=0;
 for(i=0;i<c2.length();i++)
 {
 for(j=0;j<c1.length();j++)
 {
 kai=c2.at(i)*c1.at(j);
 c3.at(i+j+1)+=kai/n;
 c3.at(i+j)+=kai%n;
 for(k=i+j;k<c3.length()-1;k++)
 {
 if(c3.at(k)>=n) 
 {
  c3.at(k+1)+=c3.at(k)/n;
  c3.at(k)=c3.at(k)%n;
 }
 else
 {
  break;
 }
 }
 }
 }
 for(i=c3.length()-1;i>=0;i--)
 {
 if(c3.at(i)>0) break;
 }
 c3.erase(i+1,c3.length());
 for(i=0;i<c3.length();i++)
 {
 if(c3.at(i)>=10) c3.at(i)+=87;
 if(c3.at(i)<10) c3.at(i)+=48;
 }
 reverse(c3.begin(),c3.end());
 if(yao==1) c3="-"+c3;
 return c3;
}
int main()
{
 string a,b;
 while(cout<<"input:"&&cin>>a>>b)
 {
 cout<<"output:"<<multiply(a,b)<<endl;
 }
 return 0;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:C++生成格式化的標(biāo)準(zhǔn)字符串實(shí)例代碼

欄    目:C語言

下一篇:詳解C語言中的字符串?dāng)?shù)組

本文標(biāo)題:C++使用string的大數(shù)乘法運(yùn)算(3)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/204.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有