2013-06-02 40 views
1

在作業1中,您將編寫一個程序來生成班級中所有學生的成績 並計算分佈。假設以下內容:生成C++的號碼

(1)班級中的學生人數爲[131,162]之間的隨機數。 (2)每個學生的成績是[10,100]之間的隨機整數。 (3)如果等級在[10,59]中,則字母等級爲F;如果等級在[60,74]中,則字母等級爲C; 如果成績在[75,84]中,則字母等級爲B;如果評分等級爲[85,100],則評分爲A。 (4)您應該計算最高等級(分數分數,不是字母分數)和最低分數(分數分數)。 (4)爲了您的最終輸出,請打印以下內容: - 我班有*學生! < - A的 B的 C'S F公司 - 最高等級爲! - 最低等級是* *!

請注意,您需要將這些*的數字替換爲您在程序中生成的數字。示例輸出的屏幕截圖可以在附件中找到;注意它中的數字只是隨機生成的。

我很難與這個作業的第一部分,你必須在指定的範圍內生成#的學生。

這是我在做什麼

int randomN; 
randomN = rand()% 31+131; 

它給了我一個號碼明顯。我在執行時遇到的麻煩是將數字轉換爲數組,範圍從1到出現的隨機數。我之前使用過MATLAB,在那裏你會做類似x = 1:randomN的任務,並且它會生成一個數組。我如何在C++上做到這一點?如果你必須使用循環,你能給我一些提示嗎?謝謝。

回答

0

創建生成一個給定的range.You隨機數可以找到許多在網絡上的功能,但你似乎幾乎都有它:

//return random number from min to max, 
//but not including max, i.e in range [min,max) 
int randN(const int min, const int max) 
{ 
    return rand() % (max-min)+min; 
} 

有與上述一些問題條款的隨機性,但它不是這個項目的大問題。現在,您可以調用該函數像這樣:

//generate random number from 10 to 100 
const int randomGrade = randN(10,101); 
const int randomNumberOfStudents = randN(131,163); 
-1
int randomN = rand() % 32 + 131; 
std::vector<int> grades; 

for (int i = 0; i < randomN; ++i) 
    grades.push_back(rand() % 91 + 10); 
+0

我沒有downvote,但我不知道他是否會失分使用'VECTOR'? – Alan

+0

這裏只是猜測,但STL在課堂上可能還沒有被覆蓋,所以瞭解它的唯一方法就是從一個有經驗的程序員那裏得到幫助。如果問,他可以(OP)證明爲什麼一個載體比一個標準的C陣列更好?我不反對你的回答,只是想起我當學生的那些日子...... – Alan

+2

@Alan:這不是一個家庭作業幫助網站。這是一個問答網站,旨在建立一個有用答案的大型檔案。錯誤的答案,即使它們可能是OP真正想要的東西,也會使網站的價值降低。如果他需要特定於他的課堂環境的幫助,那麼SO不是找到它的地方。 (請參閱常見問題解答(FAQ)。本網站面向專業和發燒友程序員,尋找適用於現實世界問題的真實世界解決方案。) –

0

拿出一個僞代碼算法:

  1. 計算學生,N的數量,131-162
  2. 之間 分配數組,A,大小N
  3. 對於i = 0〜(N-1),生成一個等級,g,10-100之間
  4. 的設置A[i] = g;

或者代碼:

//assumes that you have a helper method `myRandomGen` that takes 
//a min and max value 
int numberOfStudents = myRandomGen(131,162); 
int* grades = new int[numberOfStudents]; 
for(int i = 0; i < numberOfStudents; ++i) { 
    grades[i] = myRandomGen(10,100); 
} 


// do something with the array, then free up the memory 
delete[] grades;