论坛首页 入门技术论坛

c++ 分割任意一个整数,谁有好的方法??

浏览 1689 次
精华帖 (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;
//}
 

哪位有好的方法,分割任意一个整数。。。。。。。。。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics