當前位置:編程學習大全網 - 源碼下載 - c語言加減法源代碼

c語言加減法源代碼

/////這是C++,模塊化程度更高,用string存儲整數,比數組存儲更容易實現。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///1.輸入形式為:A[空格或換行符]O[空格或換行符]B;

///2.1,其中A和B為大數,O為運算符(如輸入:123456789/432432);

//// 3.既然處理大數,就不需要輸入小數位;

//// 4.加減不能處理負號,乘除可以;

//// 5.它用於學習和交流。如果您發現任何錯誤或不足之處,可以聯系。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

# include & ltiostream & gt

# include & lt字符串& gt

使用命名空間std

類別重要人物{

字符串num1,num2

字符串結果;

int精度;

充電操作;

公共:

大人物(){

num 1 = num 2 = " 0 ";

outcome = " 0

精度= 5;

}

弦與弦。加號(字符串& amp,字符串& amp);

弦與弦。減法(字符串& amp,字符串& amp);

弦與弦。乘法(字符串& amp,字符串& amp);

弦與弦。除法(字符串& amp,字符串& amp);

void show();

void big figure interface();

弦與弦。revese(字符串& amp);

朋友團隊& amp操作員& gt& gt(istream & amp我,大人物& ampa){

return i & gt& gta . num 1 & gt;& gta .操作& gt& gta . num 2;

}

~BigFigure(){ }

};

void BigFigure::show(){

cout & lt& lt結果:“& lt& lt結果& lt& ltendl

}

void big figure::big figure interface(){

大人物a;

cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */n”;

cout & lt& lt“歡迎光臨.../n ";

cout & lt& lt“大數字四則運算/n”;

cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */n/n”;

cout & lt& lt”備註:/n”;

cout & lt& lt"1.輸入形式為:A[空格或換行符]O[空格或換行符]b ./n ";

cout & lt& lt"2.在1中,A和B是大數,O是運算符(例如,輸入:123456789/432432)。/n ";

cout & lt& lt"3.既然處理大數,就不需要輸入小數位。/n ";

cout & lt& lt"4.加法和減法不能處理負號,但是乘法和除法可以。/n ";

cout & lt& lt"5.用於學習和交流。如果妳發現任何錯誤,妳可以聯系519916178@qq.com。/n/n ";

cout & lt& lt“現在開始,如果要退出,輸入0 0 0結束!/n/n ";

cout & lt& lt"[big figure #]";

CIN & gt;& gta;

while(a.operation!='0'){

開關(操作){

大小寫'+': a.plus(a.num1,a . num 2);

a . show();打破;

大小寫'-': a .減數(a.num1,a . num 2);

a . show();打破;

case '*': a .乘法(a.num1,a . num 2);

a . show();打破;

case '/':a . division(a . num 1,a . num 2);

a . show();打破;

默認值:cout & lt& lta .操作& lt& lt“不是算術運算。/n ";

}

cout & lt& lt"[big figure #]";

CIN & gt;& gta;

}

系統(“cls”);

cout & lt& lt"/n/n/n/n/n/n/t/t退出.../n/n/n/n/n/n/n ";

系統(“暫停”);

}

弦與弦。revese(字符串& amps){

char c;

int t = s . size();

for(int I = 0;我& ltt/2;i++){

c = s[I];

s[I]= s[t-I-1];

s[t-I-1]= c;

}

返回s;

}

弦與弦。BigFigure::plus(字符串& ampstr1,字符串和。Str2){//加法運算,未處理的符號

int min=0,I,t = 0;

字符串溫度;

outcome . clear();

str 1 = revese(str 1);

str 2 = revese(str 2);

min = str 1 . size()& lt;str2.size()?str 1 . size():str 2 . size();

for(I = 0;我& ltmini++){

temp+=(str 1[I]+str 2[I]-96+t)% 10+48;

t =(str 1[I]+str 2[I]-96+t)/10;

}

if(min==str1.size()){

while(我& ltstr2.size()){

temp+=(str 2[I]+t-48)% 10+48;

t =(str 2[I]-48+t)/10;

i++;

}

if(t)temp+= ' 1 ';

}

否則{

while(我& ltstr1.size()){

temp+=(str 1[I]+t-48)% 10+48;

t =(str 1[I]-48+t)/10;

i++;

}

if(t)temp+= ' 1 ';

}

outcome = revese(temp);

返回結果;

}

弦與弦。減法(字符串& ampstr1,字符串和。Str2){//減法運算,未處理符號。

int min=0,flag,I,t = 0;

字符串溫度;

outcome . clear();

if(str 1 . size()>;str 2 . size()| |(str 1 . size()= = str 2 . size()& amp;& ampstr 1 . compare(str 2)= = 1){

str 1 = revese(str 1);

str 2 = revese(str 2);

flag = 0;

min = str 2 . size();

}

else if(str 1 . size()= = str 2 . size()){

如果(!str1.compare(str2)){

outcome =“0”;

返回結果;

}

if(str 1 . compare(str 2)= =-1){

temp = str 1;

str 1 = revese(str 2);

str 2 = revese(temp);

flag = 1;

min = str 2 . size();

}

}

否則{

temp = str 1;

str 1 = revese(str 2);

str 2 = revese(temp);

flag = 1;

min = str 2 . size();

}

temp . clear();

for(I = 0;我& ltmini++){

if(str 1[I]-t & lt;str2[i]){

temp+= str 1[I]+10-t-str 2[I]+48;

t = 1;

}

否則{

temp+= str 1[I]-t-str 2[I]+48;

t = 0;

}

}

while(我& ltstr1.size()){

如果(!t){

while(我& ltstr1.size()){

temp+= str 1[I];

i++;

}

打破;

}

if(str1[i]!= ' 0 '){ temp+= str 1[I]-t;t = 0;}

else temp+= ' 9 ';

i++;

}

字符串s;

for(unsigned int k = temp . size()-1;k & gt=0;k - ){

if(temp[k]!='0'){

for(int n = k;n & gt=0;n -)

s+= temp[n];

打破;

}

}

if(flag)s = '-'+s;

結果= s;

返回結果;

}

弦與弦。乘法(字符串& ampstr1,字符串和。Str2){//乘法運算,已處理符號

char c='0 ',flag = 0;

string temp1,temp2 = " 0

if(str 1[0]= = ' 0 ' | | str 2[0]= = ' 0 '){

outcome = " 0

返回結果;

}

if(str 1[0]= = '-'){ flag++;str1.erase(0,1);}

if(str 2[0]= = '-'){ flag++;str2.erase(0,1);}

str 1 = revese(str 1);

str 2 = revese(str 2);

for(無符號int I = 0;我& ltstr 2 . size();i++){

c =“0”;

for(無符號int j = 0;j & ltstr 1 . size();j++){

temp 1+=((str 2[I]-48)*(str 1[j]-48)+c-48)% 10+48;

c =((str 2[I]-48)*(str 1[j]-48)+c-48)/10+48;

}

如果(c!= ' 0 ')temp 1+= c;

temp 1 = revese(temp 1);

for(int k = 0;k & lt我;k++)

temp 1+=“0”;

temp2=plus(temp1,temp 2);

temp 1 . clear();

}

if(標誌% 2)temp 2 = '-'+temp 2;

結果= temp2

返回結果;

}

弦與弦。除法(字符串& ampstr1,字符串和。Str2){//除法運算,已處理符號

int str=0,flag=0,flag1=0,flag 2 = 0;

字符串temp,temps,tempt

if(str2=="0"){

outcome = " Inf

返回結果;

}

if(str 2 = = " 1 " | | str 1 = = " 0 "){

結果= str 1;

返回結果;

}

if(str 1[0]= = '-'){ flag++;str1.erase(0,1);}

if(str 2[0]= = '-'){ flag++;str2.erase(0,1);}

for(無符號int I = 0;我& ltstr 1 . size();I++){//可分處理

str = 0;

temp+= str 1[I];

if(temp[0]=='0') temp.erase(0,1);

if(temp . size()& gt;str2.size() ||

(temp . size()= = str 2 . size()& amp;& amptemp.compare(str2)>=0)){

while(temp . size()& gt;str2.size() ||

(temp . size()= = str 2 . size()& amp;& amptemp.compare(str2)>=0)){

tempt = str2

temp =減法(temp,tempt);

str++;

}

temps+= str+48;

}

else if(temp . size()= = str 2 . size()& amp;& amptemp . compare(str 2)= = 0)temps+= ' 1 ';

else temps+=“0”;

}

flag 1 = temps . size();

if(temp!= " 0 " & amp& ampprecision) temps+= ' . ';

for(int I = 0;我& lt精密與數學。& amp臨時工!="0";I++){//小數後置的處理

str = 0;

temp+=“0”;

if(temp . size()& gt;str2.size() ||

(temp . size()= = str 2 . size()& amp;& amptemp.compare(str2)>=0)){

while(temp . size()& gt;str2.size() ||

(temp . size()= = str 2 . size()& amp;& amptemp.compare(str2)>=0)){

tempt = str2

temp =減法(temp,tempt);

str++;

}

temps+= str+48;

}

else if(temp . size()= = str 2 . size()& amp;& amptemp . compare(str 2)= = 0)temps+= ' 1 ';

else temps+=“0”;

}

flag 2 = temps . size()-2;

if(temps[temps . size()-1]& gt;= ' 5 ' & amp& ampflag 2-flag 1 = = precision){//舍入處理。

temps.erase(flag1,1);

temps . erase(temps . size()-1,1);

temp = " 1 ";

temps=plus(temps,temp);

if(temps . size()& gt;' flag 2)temps . insert(flag 1+1,1,'.');

else temps.insert(flag1,1,'.');

}

else if(flag 2-flag 1 = = precision)temps . erase(temps . size()-1,1);

temp . clear();

for(無符號整數k = 0;k & lttemps . size();K++){//左手歸零處理

if(temps[k]!='0' || temps[k+1]== ','){

for(int n = k;n & lttemps . size();n++)

temp+= temps[n];

打破;

}

}

if(標誌% 2)temp = '-'+temp;

結果=溫度;

返回結果;

}

Int main(){// main函數

大人物a;

a.big figure interface();

返回0;

  • 上一篇:線報群如何引流
  • 下一篇:精神分析批評法
  • copyright 2024編程學習大全網