#include <iostream>using namespace std;/*3 正數減法問題描述: 兩個任意長度的正數相減,這兩個正數可以帶小數點,也可以是整數,請輸出結果。 輸入的字串中,不會出現除了數字與小數點以外的其它字元,不會出現多個小數點以及小數點在第一個字元的位置等非法情況,所以考生的程式中無須考慮輸入的數值字串非法的情況。 詳細要求以及約束:1.輸入均為正數,但輸出可能為負數; 2.輸入輸出均為字串形式;3.如果輸出是正數則不需要帶符號,如果為負數,則輸出的結果字串需要帶負號例如:2.2-1.1 直接輸出為“1.1”,1.1-2.2 則需要輸出為“-1.1” 4.輸出的結果字串需要過濾掉整數位前以及小數位後無效的0,小數位為全0的,直接輸出整數位例如相減結果為11.345,此數值前後均不可以帶0,“011.345”或者“0011.34500”等等前後帶無效0的均視為錯誤 輸出。例如1.1-1.1結果為0.0,則直接輸出0。要求實現函數:void Decrease(char *input1, char*input2, char *output)【輸入】 char *iinput1 被減數char*nput2 減數 【輸出】 char *output 減法結果【返回】 無樣本輸入:char *input1="2.2" char *input2="1.1"輸出:char*output="1.1"輸入:char *input1="1.1" char *input2="2.2"輸出:char *output="-1.1"*/void Decrease(char *input1, char*input2, char *output){int i;int n1=0;int n2=0;int m1=0;int m2=0;for(i=0;input1[i]!='.';i++){if(input1[i]=='\0'){m1=-1;break;}++n1;}if(m1==-1)m1=0;else{for(++i;input1[i]!='\0';i++){++m1;}}for(i=0;input2[i]!='.';i++){if(input2[i]=='\0'){m2=-1;break;}++n2;}if(m2==-1)m2=0;else{for(++i;input2[i]!='\0';i++){++m2;}}cout<<"n1"<<n1<<"n2"<<n2<<endl;cout<<"m1"<<m1<<"m2"<<m2<<endl;int m3=(m1>m2?m1:m2);int n3=(n1>n2?n1:n2);int len=n3+m3;char *s1=new char[len];char *s2=new char[len];char *s3=new char[len+1];for(i=0;i<n3;i++){if(n3-i>n1)s1[i]='0';elses1[i]=input1[n1+i-n3];if(n3-i>n2)s2[i]='0';elses2[i]=input2[n2+i-n3];}for(i=n3;i<m3+n3;i++){if(i-n3<m1)s1[i]=input1[n1+1+i-n3];elses1[i]='0';if(i-n3<m2)s2[i]=input2[n2+1+i-n3];elses2[i]='0';}cout<<s1<<endl;cout<<s2<<endl;int k=0;for(i=0;i<len;i++){if(s1[i]>s2[i])break;else if(s1[i]<s2[i]){k=-1;break;}}int d=0;if(k==-1){for(i=0;i<len;i++){swap(s1[i],s2[i]);}output[d++]='-';}cout<<s1<<endl;cout<<s2<<endl;k=0;for(i=len-1;i>-1;i--){if((k+s1[i]-s2[i])>=0){s3[i]='0'+k+s1[i]-s2[i];k=0;}else{s3[i]='0'+10+k+s1[i]-s2[i];k=-1;}cout<<"s3[]"<<i<<""<<s3[i]<<endl;}cout<<s3<<endl;int start=0;for(i=0;i<n3;i++){if(start==0 && s3[i]=='0')continue;start=1;output[d++]=s3[i];}if(start==0)output[d++]='0';start=0;for(i=len-1;i>n3-1;i--){if(start==0&&s3[i]=='0')continue;start=1;break;}int a1=i;if(start==0){output[d]='\0';}else{output[d++]='.';for(i=n3;i<a1+1;i++)output[d++]=s3[i];output[d]='\0';}}int main(void){char *input1="1.1" ;char *input2="2.2";char *output=new char[100];Decrease(input1, input2, output);cout<<output;system("pause");return 0;}