2009-10-15 162 views
0

我正在制定一個貨幣變更計劃,我將提供輸入金額的確切變化,例如,23的值將是一個20美元和3個美元賬單限制用戶輸入僅限於2位小數的有效數字C/C++

我想限制用戶只輸入值到2位小數。例如:有效輸入爲 20,20.4,23.44,但無效輸入爲20.523或20.000。

我該如何做到這一點是C/C++。

我讀了一個函數,即setprecision但這不是我想要的,setprecision允許顯示值直到小數點,它仍然不會阻止用戶輸入任何值。

有沒有辦法做到這一點?

+0

C或C++?該解決方案將取決於語言是不同的。 – 2009-10-15 18:51:35

+0

不會scanf函數(%2F,與VAR)做到這一點? – Tom 2009-10-15 18:56:48

+0

無論哪個更容易實現,無論是在C或C++ – Ray 2009-10-15 20:00:41

回答

2

從字符串中逐個字符或整行讀取用戶的金額,然後檢查其格式,然後將其轉換。

0

我不相信有什麼辦法可以讓圖書館爲你做這件事。正因爲如此,你將不得不自己做這項工作。

你可以做到這一點,但唯一真正的方法來處理限制輸入是控制自己閱讀它。

在這種情況下,您將循環使用鍵盤輸入,因爲您必須決定是否可以在過去的輸入環境中接受鍵盤輸入,然後顯示它。也就是說,如果有小數點,你只會接受更多的數字。這也允許您將輸入限制爲數字和小數位數,更不用說輸入長度。

不利的一面是你將不得不處理所有的編輯命令。即使是裸露的骨頭,您也需要支持刪除和輸入。

0

對於您正在使用的GUI,這是一個相當於核心C/C++的任務。根據您的GUI/Web Toolkit,您可以提供或多或少的詳細規則如何輸入或不輸入數據。

如果你正在編寫一個正常的GUI應用程序,你可以控制和修改輸入的鍵(在C或C++中)。 在一個WEB應用程序中,你可以使用JavaScript來做類似的事情。 最好的解決辦法是,當所有的非法輸入是不可能的。

1

讓用戶輸入他們想要的任何內容通常會更容易,然後如果該程序無效,則拒絕該輸入,而不是限制他們可以在按鍵上鍵入的內容。

對於按鍵分析,您需要一個具有4個狀態的狀態機,我們可以調用Number,Numberdot,Numberdotone和Numberdottwo。您的代碼必須對所有按鍵進行適當的轉換,包括將光標移動到某個任意位置的方向鍵和Backspace鍵。這是很多工作。使用輸入驗證,您所要做的就是使用正則表達式檢查輸入,例如, ^(([0-9] +)|([0-9] +。[0-9])|([0-9] +。[0-9] [0-9])$。 「20」是無效的。那麼,如果它是無效的,你告訴用戶,讓他們再做一遍。

相關問題