大数转为二进制的栈的应用

来源:互联网 发布:小鸡模拟器网络验证 编辑:程序博客网 时间:2024/06/11 03:22

今天花了好久的时间写了一个栈的二进制应用,最后还是被我写出了,感觉还是挺有成就感的,特意记录下大笑

普通整数转化,应该很简单,不多说了

#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;elsetemp = 0;}s[++top].key= a;}elsebreak;}k = 1;//输出的操作 while (top != -1) {cout << s[top--].key;if ((k)%4 == 0)cout << " ";k++;}return 0;}


0 0
原创粉丝点击