我試圖打開課件CS106b分配1.我被陷在問題4這就需要使用遞歸的寫入字符串轉換爲整數。我們不允許使用任何執行整數轉換的庫函數。C++和遞歸:函數整數到
的問題是,每一個「遞歸級別」後的代碼不保留以前的字符串的軌道,因此我不能追加和構建到字符串。
#include <iostream>
#include <string>
#include "console.h"
#include "simpio.h"
using namespace std;
/* Function prototypes */
string intToString(int n);
int stringToInt(string str);
/* Main program */
int main() {
// [TODO: fill in the code]
int n = getInteger("Enter number for conversion to String: ");
cout<< "Converted to String: "<<intToString(n);
return 0;
}
//Functions
string intToString(int n){
double toBeDecomposed = n;
string convertedToString;
char ch;
string tempString;
if((double)(toBeDecomposed/10) >= 0.1){
int lastDigit = (int)toBeDecomposed%10;
toBeDecomposed = (int)(toBeDecomposed/10);
intToString(toBeDecomposed);
if (lastDigit == 0) {
ch = '0';
}
else if (lastDigit == 1) {
ch = '1';
}
else if (lastDigit == 2) {
ch = '2';
}
else if (lastDigit == 3) {
ch = '3';
}
else if (lastDigit == 4) {
ch = '4';
}
else if (lastDigit == 5) {
ch = '5';
}
else if (lastDigit == 6) {
ch = '6';
}
else if (lastDigit == 7) {
ch = '7';
}
else if (lastDigit == 8) {
ch = '8';
}
else if (lastDigit == 9) {
ch = '9';
}
tempString = string() + ch;
convertedToString = convertedToString.append(tempString);
cout<<convertedToString<<endl;
}
cout<<"Returning: "<<convertedToString<<endl;
return convertedToString;
}
int stringToInt(string str){
return 0;
}
我調試輸出顯示,它只返回最後一個數字:
任何人都可以建議如何成功地追加到字符串ConvertedToString
讓我回到了整個轉換的整數?
雖然你的問題已經得到解答,但我有一個改進建議。鬆散使用浮點(雙精度型)。這是不需要的,可能會導致舍入問題,效率較低,特別是在沒有浮點單元的平臺上。它也看起來像我的功能不會爲值<= 0工作。 – Eelke 2012-08-12 04:49:31