codeup id=1817 A+B
阿新 • • 發佈:2018-11-16
程式碼原型是天勤的資料結構關於串的賦值為原型,進行的改進修改。編譯執行正確,程式碼如下:
#include<iostream> #include<stdlib.h> #include<string.h> #define maxsize 100 using namespace std; typedef struct {char* ch; int length; }Str; int strassign(Str& str, char* ch,int ina[]) {int j=0; if(str.ch) free(str.ch); int len=0; char *c=ch; while(*c) {++len; ++c; } if(len==0) {str.ch=NULL; str.length=0; return 1; } else {str.ch=(char*)malloc(sizeof(char)*(len+1)); if(str.ch==NULL) return 0; else { c=ch; for(int i=0;i<=len;++i,++c) { if(*c>='0'&&*c<='9') {str.ch[j]=*c;//此處j不可用i應為不屬於0~9時下標不應該變化 j++;} } // cout<<"j="<<j<<endl; for(int i=0;i<j;i++) {ina[i]=int(str.ch[i]-'0'); //cout<<int(str.ch[i]-'0')<<endl; } str.length=j; //cout<<"轉換後="<<ina<<endl; return 1; } } } int main() {Str str_a,str_b; int ina[maxsize],inb[maxsize],sum1,sum2,sum; str_a.ch=(char*)malloc(sizeof(char)); str_b.ch=(char*)malloc(sizeof(char)); char ch_a[maxsize]; char ch_b[maxsize]; while(cin>>ch_a>>ch_b) {sum1=sum2=sum=0; strassign(str_a,ch_a,ina); strassign(str_b,ch_b,inb); //cout<<str_a.ch<<endl; //cout<<str_a.length<<endl; //cout<<ina<<endl; /* for(int i=0;i<str_b.length;i++) cout<<str_b.ch<<endl; cout<<str_b.length<<endl; */ for(int i=0;i<str_a.length;i++) {//cout<<"轉換後="<<ina[i]<<endl; sum1=sum1*10+ina[i]; } for(int i=0;i<str_b.length;i++) {//cout<<"轉換後="<<inb[i]<<endl; sum2=sum2*10+inb[i]; } if(ch_a[0]=='-') sum1=sum1*(-1); if(ch_b[0]=='-') sum2=sum2*(-1); // cout<<"sum1="<<sum1<<endl; // cout<<"sum2="<<sum2<<endl; sum=sum1+sum2; // cout<<"sum="<<sum<<endl; cout<<sum<<endl; } return 0; }