codeup id=1817 A+B

 代码原型是天勤的数据结构关于串的赋值为原型,进行的改进修改。编译运行正确,代码如下:

#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;
}
 
 
 

猜你喜欢

转载自blog.csdn.net/qq_26004051/article/details/83582381
今日推荐