`
ccjsjymg
  • 浏览: 62295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
#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;
//}
 

哪位有好的方法,分割任意一个整数。。。。。。。。。
分享到:
评论

相关推荐

    Minimal m Sums 给定n 个整数组成的序列,现在要求将序列分割为m 段,每段子序列中的数在原序列中连续排列。如何分割才能使这m段子序列的和的最大值达到最小?

    - 给定一个包含 n 个整数的序列。 - 要求将这个序列分割为 m 个连续的子序列(每段子序列中的数在原序列中必须连续排列)。 - 目标是最小化这些子序列的和的最大值。 #### 输入输出格式 **输入**: - 第一行包含两...

    判断输入整数含有多少个0

    当我们处理整数时,有时会遇到需要计算一个整数中包含"0"的个数的问题。这个任务通常在统计数字特性、字符串处理或者编码解码的场景中出现。本篇文章将详细讲解如何在不同的编程语言中判断并计算输入整数中"0"的个数...

    整数划分的vs2010实现

    在这个问题中,目标是将一个正整数n分解为若干个正整数的和,这些正整数互不相同,且可以按任意顺序排列。VS2010是Microsoft Visual Studio 2010的简称,是一个强大的集成开发环境,支持多种编程语言,包括C++和C。...

    采用分治法计算两个大整数的乘积

    实现算法: 给定两个整数u和v,它们分别有m和n位数字,且m≤n。用通常的乘法求uv的值需要O(mn)时间。我们可以将u和v均看作是有n位数字的大整数。用分治法在O(nlog3)时间内计算uv的值。当m时,此法效率不高。...

    SHA-1算法C++实现

    SHA-1(Secure Hash Algorithm 1)是一种广泛使用的...总体而言,这段C++代码提供了SHA-1算法的一个具体实现,它能够处理任意长度的消息,将其转化为固定长度的散列值,这在密码学和数据完整性检查中有着重要的应用。

    运算 大整数 乘法

    例如,如果需要表示一个非常大的整数,可以将其分割成若干个较小的部分,每个部分存储在一个数组元素中。这种方法可以有效地处理任意长度的大整数,并且可以通过修改算法来优化计算性能。 #### 示例代码分析 下面...

    C++实用MD5算法

    它将任意长度的数据转化为一个固定长度的128位(16字节)的摘要,通常用32个十六进制数字表示。在C++中实现MD5算法可以用于数据完整性校验、密码存储等方面,因为其具有快速计算和抗碰撞的特点。 在C++中实现MD5...

    sha-256.rar_SHA256_c实现sha256签名_签名验证C++

    在这个“sha-256.rar”压缩包中,包含了一个C语言实现的SHA-256签名算法,以及一个C++编写的签名验证程序。以下是关于SHA-256算法、C语言实现和C++签名验证的详细知识点: 1. **SHA-256算法原理**: SHA-256...

    MD5.rar_C++MD5_md5_md5 c++_md5 algorithm

    MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的哈希函数,设计用于生成一个固定长度的128位(16字节)摘要,通常以32个十六进制数字的形式表示。在C++中实现MD5算法,可以为文件、文本或任何数据提供一种...

    C++同步实验范例

    它有两种类型:二进制信号量(类似互斥量,只能0或1)和计数信号量(可以有任意非负整数值)。C++标准库未直接提供信号量,但可以使用第三方库如Boost或自己实现。 4. **原子操作(Atomic Operations)**:原子操作...

    你必须知道的495个C语言问题

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数...

    MD5算法的C++实现和调用程序

    这个函数接受一个字符串,计算其MD5摘要,并返回一个32字符的十六进制字符串。`MD5()`函数负责实际的计算,而`stringstream`则用于格式化输出。 在开发中,MD5虽然在安全性上已经不再满足现代标准,因为它容易受到...

    Visual C++ 常用数值算法集

    4.5零阶、一阶和任意整数阶的第一、二类变形贝塞尔函数 4.6分数阶第一类贝塞尔函数和变形贝塞尔函数 4.7指数积分和定指数积分 4.8连带勒让德函数 附录 第5章 函数逼近 5.1级数求和 5.2多项式和有理函数 5.3...

    c和c++500强面试题

    10. 求二叉树中节点的最大距离:这是一个关于树的深度和广度的问题,可以通过递归计算任意两节点间的最大距离,即根节点到最远叶子节点的最长路径。 以上内容仅为文件中提到的部分题目知识点,类似的问题还有很多,...

    数组分割问题(印象深刻)1

    数组分割问题是一种经典的动态规划问题,旨在将一个无序的正整数数组分割为两个子数组,使得两个子数组之和最接近。该问题可以拆分为两个子问题:一是将数组分割为两个元素个数不限的子数组,使得两个子数组之和最...

    《你必须知道的495个C语言问题》

    可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12  数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由...

Global site tag (gtag.js) - Google Analytics