怎么在C++中利用string實現(xiàn)除法運算-創(chuàng)新互聯(lián)

怎么在C++中利用string實現(xiàn)除法運算?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

十年的阿克塞哈薩克族自治網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整阿克塞哈薩克族自治建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“阿克塞哈薩克族自治網(wǎng)站設(shè)計”,“阿克塞哈薩克族自治網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

項目要點

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

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

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

比如:char a=161;

    cout<<(int)a;

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

除法,除法主要采用的還是筆算的思想,需要用到之前博客當(dāng)中的減法函數(shù)minus

核心思想:比如861/21

               先用86去減21 知道數(shù)值小于21時停止 也就是2

               再添加上下一位,就變成了21

               如果這個數(shù)大于等于21,則再用這個數(shù)減去它

               21-21=0,記錄其減的次數(shù),就是結(jié)果,該結(jié)果只保留了整數(shù)部分,余數(shù)會在之后的取模運算博客中講到

               其實可以明顯看出余數(shù)就是減完所有可以減掉的21之后的數(shù),也就是0

運行截圖及代碼如下:

怎么在C++中利用string實現(xià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;
}
int judge(string a,string b)//判斷兩個正數(shù)的大小
{
 if(a.length()>b.length()) return 1;
 if(a.length()<b.length()) return -1;
 long int i;
 for(i=0;i<a.length();i++)
 {
 if(a.at(i)>b.at(i)) return 1;
 if(a.at(i)<b.at(i)) return -1;
 }
 return 0;
}
string minus(string a,string b)//自然數(shù)減法(在之前博客中寫到過,這里直接挪過來調(diào)用了)
{
 a=dezero(a);
 b=dezero(b);
 long int i,j=0;
 string c="0";
 string c1,c2;
 string d="-";
 if(judge(a,b)==0) return c;
 if(judge(a,b)==1)
 {
 c1=a;
 c2=b;
 }
 if(judge(a,b)==-1)
 {
 c1=b;
 c2=a;
 j=-1;
 }
 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<c2.length();i++)
 {
 c1.at(i)=c1.at(i)-c2.at(i);
 }
 for(i=0;i<c1.length()-1;i++)
 {
 if(c1.at(i)<0)
 {
 c1.at(i)+=n;
 c1.at(i+1)--;
 }
 }
 for(i=c1.length()-1;i>=0;i--)
 {
 if(c1.at(i)>0) break;
 }
 c1.erase(i+1,c1.length());
 for(i=0;i<c1.length();i++)
 {
 if(c1.at(i)>=10) c1.at(i)+=87;
 if(c1.at(i)<10) c1.at(i)+=48;
 }
 reverse(c1.begin(),c1.end());
 if(j==-1) c1.insert(0,d);
 return c1;
}
string divide(string a,string b)//自然數(shù)除法
{
 if(b.length()==1&&b.at(0)==48) return "error";
 long int i,j;
 string c1,c2,d,e;
 if(judge(a,b)==0) return "1";
 if(judge(a,b)==-1)
 {
 return "0";
 }
 c1=dezero(a);
 c2=dezero(b);
 d="";
 e="";
 for(i=0;i<c1.length();i++)
 {
 j=0;
 d=d+c1.at(i);
 d=dezero(d);
 while(judge(d,b)>=0)
 {
 d=minus(d,b);//調(diào)用之前的減法函數(shù)minus,在本文中也加了進來
 d=dezero(d);
 j++;
 }
 e=e+"0";
 e.at(i)=j;
 }
 for(i=0;i<e.length();i++)
 {
 if(e.at(i)>=10) e.at(i)+=87;
 if(e.at(i)<10) e.at(i)+=48;
 }
 e=dezero(e);
 return e;
}
int main()
{
 string a,b;
 while(cout<<"input:"&&cin>>a>>b)
 {
 cout<<"output:"<<divide(a,b)<<endl;
 }
 return 0;
}

關(guān)于怎么在C++中利用string實現(xiàn)除法運算問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:怎么在C++中利用string實現(xiàn)除法運算-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://muchs.cn/article12/dsipgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站營銷、網(wǎng)站制作、網(wǎng)站維護網(wǎng)站設(shè)計公司、手機網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)