Q5.2

来源:互联网 发布:淘宝能不能写厂家直销 编辑:程序博客网 时间:2024/05/08 17:43
第1种方法:#include <iostream>#include <cmath>#include <stack>#include <queue>using namespace std;stack<int> st;queue<int> q;const int maxn = 30;void print(string &s){char ch[20];strcpy(ch, s.c_str());float n = atof(ch);int integer = (int)n;float decimal = n - integer;int t;while(integer >= 2){t = integer % 2;st.push(t);integer /= 2;}st.push(integer);while (decimal != 0){if(q.size() > maxn){cout << "ERROR" << endl;return;}decimal *= 2;t = int(decimal);q.push(t);if(decimal >= 1)decimal -= 1;}while (!st.empty()){cout << st.top();st.pop();}cout << '.';while (!q.empty()){cout << q.front();q.pop();}}int main(void){string s;cin >> s;print(s);return 0;}


第二种方法:

#include <iostream>#include <cmath>using namespace std;const int maxn = 30;string print(string &s){char ch[20];strcpy(ch, s.c_str());double n = atof(ch);int integer = (int)n;float decimal = n - integer;int t;string intres = "", decires = "", res = "";while(integer > 0){t = integer % 2;if(t)intres = "1" + intres;elseintres = "0" + intres; integer /= 2;}while (decimal > 0){decimal *= 2;if(decimal >= 1){decires += "1";decimal -= 1;}elsedecires += "0";if(decires.size() > 30)return "ERROR";}return intres + "." + decires;}int main(void){string s;cin >> s;string re = print(s);cout << re << endl;return 0;}


0 0
原创粉丝点击