浏览 1689 次
锁定老帖子 主题:c++ 分割任意一个整数,谁有好的方法??
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-09
#include <iostream> #include <vector> #include <string> #include <sstream> #include <math.h> #define le 10 using namespace std; string getString(const int a); unsigned stringToInt(string str); unsigned ts(string str,unsigned maxI); unsigned getInt(); int getLen(int b); int getChar_int(int a); bool isDigit(string c); vector<int> splitInt(int a); unsigned getInt(); //void operatorVector(){ // vector<int> v; // if(!v.empty()) // v.clear(); // for(int i = 0;i <le;i++ ){ // v.push_back(i); // } // std::string str; // for(int i = 0;i < v.size();i++){ // int b = v[i]; // std::string ss; // ss = getString(b); // if(str.empty()){ // str = ss; // }else{ // str +=","+ss; // } // } // cout<<str; // //} ///* // * 第一种方法int转化为string类型 // */ //string getString(const int a){ // std::stringstream str; // str<<a; // return str.str(); //} ///* // * 第二种方法 // */ // string intToString(const int a){ // int b = a; // int *t = &b; // cout<<*t<<endl; // std::string s; // //s = t; // return s; // } void printSplit(){ vector<int> v = splitInt(getInt()); for(int i = 0;i < v.size();i++){ cout<<v[i]<<endl; } } /* * 分割任意一个整数 */ vector<int> splitInt(int a){ vector<int> v; int len = getLen(a); cout<<"长度:"<<len<<endl; for(int i = len;i >= 1;i--){ double j = pow(10,i-1); if(i == len){ v.push_back((int)(a/j)); }else{ v.push_back((a/((int)j))%10); } } return v; } //得到一个整数 unsigned getInt(){ unsigned maxI = (2 << 31)-1; string str; cout<<"请输入任意一个整数:"<<endl; cin>>str; return ts(str,maxI); } unsigned ts(string str,unsigned maxI){ unsigned i; if(!isDigit(str)){ return 0;//不是数字默认为0; } i = stringToInt(str);//将string类型转化为int型 return i; } /* * 判断一个数有多少位 */ int getLen(int b){ int len = 0; for(int i = 10;i >=1;i--){//i代表几位数 int j = (int)pow(10,i-1); if(b/j != 0){ len = i; break; } } return len; } /* * 判断是否为数字 */ bool isDigit(string c){ bool flag = true; for(int i = 0;i <c.length();i++){ char t = c[i]; if(t > '9' || t < '0'){ flag = false; break; } } return flag; } /* * 字符串转化为int */ unsigned stringToInt(string str){ char ch[str.length()]; unsigned ii = 0; int flag = str.length(); for(int i = str.length()-1;i >= 0;i--){ double tt = pow(10,flag - i-1); ch[i] = str[i]; if(ii == 0){ ii = ch[i]; ii = getChar_int(ii); ii = ii * tt; }else{ unsigned is = ch[i]; is = getChar_int(is); ii += is * tt; } } return ii; } /* * 把数字转回为原先字符数字型 */ int getChar_int(int a){ switch (a) { case 49: a = 1; break; case 50: a = 2; break; case 51: a = 3; break; case 52: a = 4; break; case 53: a = 5; break; case 54: a = 6; break; case 55: a = 7; break; case 56: a = 8; break; case 57: a = 9; break; default: a = 0; break; } return a; } //int main(){ // //强制转换对转换指针本身是不变的,只是产生一个临时的新类型的指针 // printSplit(); // return 0; //} 哪位有好的方法,分割任意一个整数。。。。。。。。。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |