大数转为二进制的栈的应用
2015-10-13 22:14
211 查看
今天花了好久的时间写了一个栈的二进制应用,最后还是被我写出了,感觉还是挺有成就感的,特意记录下
普通整数转化,应该很简单,不多说了
大数的转化,读进来字符串,后来用字符串来操纵,但一直错,后来直接全部改为用数组来操作,还行
普通整数转化,应该很简单,不多说了
#include<iostream> using namespace std; typedef struct{ int key; }stack; int top = -1; stack s[10000]; int main() { int n; cin >> n; while (n) { s[++top].key = n % 2; n /= 2; } while (top != -1) { cout << s[top--].key; } return 0; }
大数的转化,读进来字符串,后来用字符串来操纵,但一直错,后来直接全部改为用数组来操作,还行
#include<iostream> using namespace std; typedef struct{ int key; }stack; int top = -1; stack s[10000]; int main() { int len=0,i, j, k, sum,temp,a,b,zhi[10000]; bool flag; char ch[10000]; cin >> ch; while (ch[len] != '\0') len++; for (i = 0; i < len; i++) zhi[i] = ch[i] - '0'; while (1) { //判断,若全部都为0的话,则退出循环 flag = false; for (i = 0; i < len; i++) { if (zhi[i] != 0) { flag = true; break; } } //核心代码,每一次计数时自己位上变为原来/2,随后记录下余数,待下一位进行判断 if (flag) { temp = 0; for (i = 0; i < len; i++) { sum = temp * 10 + zhi[i]; a = sum % 2; b = sum / 2; zhi[i] = b; if (a) temp = 1; else temp = 0; } s[++top].key= a; } else break; } k = 1; //输出的操作 while (top != -1) { cout << s[top--].key; if ((k)%4 == 0) cout << " "; k++; } return 0; }
相关文章推荐
- 【LeetCode从零单刷】Rotate Image
- android 捕获 UncaughtExceptionHandler
- ML基石_LinearModelsForClassfication
- 《剑指Offer》面试题:寻找的连续序列的和等于某一定值
- 从机器学习谈起
- poj 1094
- 【IOS 开发学习总结-OC-46】★ios开发之UI控件——UIProgressView 与 UISlider(另:可拉伸图片)
- SpringMVC稳扎稳打(3)之拦截器
- js2次学习----常用知识点总结
- VS2008配置OpenGL
- Android中windowSoftInputMode属性详解
- Log4j使用方式详解
- 自学QT之获取目录下的全部文件并且添加到tablev中
- Hibernate反向工程使用心得
- swift知识点 [1]
- XMPP即时通讯
- Window窗口层次关系
- Android应用开发性能优化完全分析
- 关于先序中序后序遍历二叉树的一点总结
- ++i与i++的区别