我有一項任務,要求程序從用戶輸入數組中讀取20個數字。 條件要求值在10-100之間且不重複。我也只允許使用一個包含20個元素的數組。但是,它不應該提示用戶,並且不會存儲該值;最後該程序必須打印出唯一的用戶值。 正確的結果,例如:使用基於C++ 11範圍的循環驗證數組值? [沒有載體]
input = 9 10 15 15 15 0
output = 10 15
//this is a small example with a 6 element array instead of 20
當我測試程序中,我只得到
input: 9 10 15 15 15 0
output: 10 15 15 15
//this is a small example with a 6 element array instead of 20
我使用基於範圍的循環來檢查值,設定值寫的代碼如果它不符合條件,則爲0。所以不是零的東西不會被打印出來。我已經通過對棧溢出所有的問題消失了,我無法找到一個答案,我具體問題:
- 如何初始化所有的數組元素使用類構造函數爲零。
- 使其成爲「靜態」,以便當我運行另一個函數時,先前的數組值是全局的,並從用戶輸入中維護。
我創建的循環看起來有點不對,但看起來很完美。我檢查了我的同學,他們也同意。
//arrayinput.h #include <array> #include <string> class arrayelimination { public: const static size_t limit = 20; arrayelimination(); void inputArray(); void displayArray(); private: std::array < int , limit > store; int userinput; }; //arrayinput.cpp #include <iostream> #include <array> #include "arrayinput.h" using namespace std; arrayelimination::arrayelimination() { array < int , limit> store = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; } void arrayelimination::inputArray() { for (size_t i = 0; i < store.size(); i++) { cout << "Enter number between 10-100 for array box [" << i << "]: " ; cin >> userinput; //check if numbers is between 10-100 if (userinput >= 10 && userinput <= 100) { //MOST LIKELY ERROR check if number has previously been used. for (int &check : store) { if (check != userinput) { store[i] = userinput; break; } else store[i] = 0; } } //output if number isn't between 10-100 else store[i] = 0; } } void arrayelimination::displayArray() { cout << "Your unique array numbers stored include...\n"; //output all the unique numbers that the user inputted. for (size_t j = 0; j < 20; j++) { //if the value is NOT 0, output. if (store[j] != 0) { cout << "array[ " << j << " ] = " << store[j] << "\n"; } } }
當我測試的程序,我只得到
input: 10 15 15 15 2 0 0 0 0 0 0 0 ... 0
output: 10 15 15 15
概念其設置爲零的作品,但重複的值不是唯一的。
我必須使用面向對象的設計作爲這項任務的要求。我接近死路我真的不知道這是如何工作。請幫幫我。
PS:我的壞我忘了提,我只允許使用一個陣列
對不起,我忘了提我可以只使用一個陣列,以僅具有20個元素執行的任務 – 2015-04-03 20:39:50
**一個陣列。所以對不起,我應該檢查所有條件 – 2015-04-03 20:43:29