改进的地方:
1、正则表达式
2、判断这个一共有多少个逗号,可以strlen()
#include<cstdio>
#include<cstring>
void count(char *str, int &left, int &right);
int zero(char *str);
int one(char *str);
int two(char *str);
int num(char *str, int nums);
int getapple(char *str);
int main(){
char str[50];
while(gets(str) != NULL){
printf("%d\n", getapple(str));
}
return 0;
}
void count(char *str, int &left, int &right){
int i = 0;
int flag = 0;
for(i = 0; i < strlen(str); i++){
if(str[i] == ' '){
flag = 1;
}
if(flag == 0){
if(str[i] == ','){
left++;
}
}else{
if(str[i] == ','){
right++;
}
}
}
}
int zero(char *str){
int num;
sscanf(str, "%d", &num);
return num;
}
int one(char *str){
int a, b;
sscanf(str, "%d,%d",&a, &b);
if(a < 0){
b = -b;
}
return a*1000 + b;
}
int two(char *str){
int a, b, c;
sscanf(str, "%d,%d,%d", &a, &b, &c);
if(a < 0){
b = -b;
c = -c;
}
return a*1000000 + b*1000 + c;
}
int num(char *str, int nums){
int num = 0;
switch(nums){
case 0: num = zero(str);
break;
case 1: num = one(str);
break;
case 2: num = two(str);
break;
default: num = 0;
}
return num;
}
int getapple(char *str){
int left = 0;
int right = 0;
int sum = 0;
char strleft[25], strright[25];
count(str, left, right);
sscanf(str, "%s %s", strleft, strright);
sum = num(strleft, left) + num(strright, right);
return sum;
}