我對C++比較陌生,來自Python的開心世界。如何從C++中的char *獲取浮點數?
我決定編寫一組函數來查找一組數字的均值,中值,模式和範圍。爲了幫助計算中位數,我決定讓l2g(最小到最大)和g2l(最大到最小)。我知道我只會使用其中的一種,但爲了完整起見,我們只想使用其中之一。
我希望我的程序儘可能少依賴外部(甚至是標準)庫。原因是我很可能會使用我再次寫入的任何函數。它們將用於我正在基於BrokenThorn上的教程開發的操作系統。因此,我希望儘可能使代碼儘可能獨立,使用我編寫的函數而不是標準庫中的函數。
我有兩個問題:
- 首先,我希望我的功能,能夠處理浮點值。用我之前創建的用戶輸入函數,我得到一個指向char數組的指針。我需要知道如何將其轉換爲浮點值。我在想,也許我可以創建一個包含char和float類型的兩個成員的聯合體,並在需要使用該值時引用float成員。我只是將用戶數據放入char成員中。但是,我不知道這種方法是否可行。我使用的教程並沒有深入地定義我自己的數據類型。
- 我的第二個困境是我不知道如何創建l2g和g2l函數。我打算嵌套兩個for循環。我打算使用裏面的一個來尋找新數組中的下一個數字,而外面的數字要重複這個過程,直到它通過原始數組中的所有數字。然後該函數會在刪除第一個數組的動態內存後返回一個指向新數組的浮點數的指針。
另一個問題是,我想我需要返回一個數組的長度,當我返回一個指針。原因在於,要使用for循環遍歷數組的內容,我需要在數組中使用最高的位置,所以我不會被垃圾回收。我有一種方法可以通過創建一個具有兩個成員,長度和數組的結構來避免此問題。它看起來像這樣:
struct arrayLength {
int l;
float * p;
} ;
我希望下面的一組電話:
float * myArrayPointer; // I will change this to user input once I get the rest of the program working
myArrayPointer = new float[5];
myArrayPointer[0] = 65.97;
myArrayPointer[1] = 21.06;
myArrayPointer[2] = 21.06;
myArrayPointer[3] = 509.69;
myArrayPointer[4] = -41.73; // Can floats be negative?
cout << mean(myArrayPointer, 5); // Give function mean the pointer to array and number of elements
cout << "\n";
cout << median(myArrayPointer, 5);
cout << "\n";
cout << range(myArrayPointer, 5);
cout << "\n";
cout << mode(myArrayPointer, 5);
cout << "\n\n\n";
arrayLength myArrayPointerLG = l2g(myArrayPointer, 5);
float * myArrayLGitem;
for(int i=0;i<myArrayPointerLG.l;i++) {
myArrayLGitem = myArrayPointerLG.p[i];
cout << myArrayPointerLGitem << "\n";
}
將給予以下的輸出:
115.21
21.06
551.42
21.06
-41.73
21.06
21.06
65.97
509.69
到目前爲止,我還沒有得到我的代碼編譯。 :/我想也許for循環有其自己的範圍...有人可以驗證這一點呢?下面是該代碼的鏈接引擎收錄:
而如果你想知道關於<iostream>
包容......我將刪除這一點,如果我最終使用的打印功能,我寫的將其添加到我的操作系統。或者我可能只是定義std :: cout。我得到的錯誤是說,currentPosition和listOfNumbers在l2g中未聲明(未定義)。我使用MSVC++ 2008 Express Edition編譯器運行Windows 7 64位。提前感謝任何人的幫助!
您的代碼沒有編譯,因爲它有大量的印刷錯誤。 - 順便說一句,你想避免任何庫函數,並且你正在使用'new(nothrow)'? – UncleBens 2010-08-18 21:44:31
請學習如何使用段落。你的帖子幾乎是不可讀的。另外,使用標準庫;它們完全便攜。另外,浮動可能是負面的。唯一不能是無符號整數類型的數字類型。 – 2010-08-18 21:45:47
你能總結一些具體的(較短的)問題嗎?從這篇較長的文章中解析您的問題很難 – Jay 2010-08-18 21:46:52