您的位置:首页 > 其它

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

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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: