2010-04-14 68 views
2

嗨,我被分配創建一個程序,創建由10個隨機整數組成的n個數組。程序應該總結所有整數並顯示結果。之後,它必須驗證哪些總和最大,並且必須顯示該數組和結果。我有麻煩做到這一點,並希望得到一些幫助! 再次感謝。 這是到目前爲止我的代碼:C++最大號碼驗證

#include <iostream> 
#include <iomanip> 
#include <cmath> 
using namespace std; 
double random(unsigned int &seed); 
unsigned int seed = 5; 
void generateData(int set[10]); 
int sumData(int set[10]); 
void checkData(int sumResult, int arrayNumber); 
int main (int argc, char * const argv[]) { 
    int arrayNumber, sumResult; 
    int set[10]; 
    do { 
     cout << "Number of Arrays to Compare: " << endl; 
     cin >> arrayNumber; 
    } while (arrayNumber < 0); 
    for (int i = 0; i < arrayNumber; ++i) { 
     generateData(set); 
     sumResult = sumData(set); 
     cout << "Sum --> " << sumResult << endl; 
     checkData(sumResult, arrayNumber); 
    } 
    return 0; 
} 

double random(unsigned int &seed) { 
    const int MODULUS = 15749; 
    const int MULTIPLIER = 69069; 
    const int INCREMENT = 1; 
    seed = ((MULTIPLIER * seed) + INCREMENT) % MODULUS; 
    return double(seed)/double(MODULUS); 
} 

void generateData(int set[10]) { 
    for (int i = 0; i < 10; ++i) { 
     set[i] = int (5 + 6 * random(seed)); 
     cout << set[i] << " || "; 
    } 
} 

int sumData(int set[10]) { 
    int sumTotal = 0; 
    for (int i = 0; i < 10; ++i) 
     sumTotal = sumTotal + set[i]; 
    return sumTotal; 
} 

void checkData(int sumResult, int arrayNumber) { 
    int largerNumber; 
    int tempSet[2]; 
    for (int i = 0; i < arrayNumber; ++i) { 
     if (sumResult > largerNumber) { 
      tempSet[i] = sumResult; 
     } 
    } 
} 
+0

除非家庭作業的部分是實現一個「隨機數發生器」,有一個'rand'函數在''這將提供比你的「隨機」函數實現更好的僞隨機數(當然,只要確定通過調用'srand'來實現它的種子)。 – 2010-04-14 01:36:01

+0

什麼,你的問題到底是什麼?你在哪裏遇到麻煩? – 2010-04-14 01:37:49

+0

我有這個assingment分配的麻煩。我被分配去開發一個生成n個數組的程序(由用戶詢問)。每個數組由10個隨機整數組成(我知道我的隨機函數不好,但這是我的教授要求我們使用的那個)。然後,程序應該總結每個數組的整數並顯示結果。然後,程序應該驗證哪些總和最大並顯示數組和總和。我如何驗證哪些數額最大? – Daniel 2010-04-14 01:42:25

回答

2

你的問題讀取

創建,創建了10個隨機整數由n個陣列程序....

  • 但我可以看到只是一個int 數組尺寸10。 你應該做的是分配一個 大小的二維數組,稱之爲 set
  • 你也應該分配 大小arrayNumber命名說的一維數組, sumArray來保存每個 陣列的總和。因此sumArray[i]將爲setith數組的所有元素的總和。
  • 下找到最大元素及其 指數(比如maxIndex)在sumArray
  • 打印數組中的索引maxIndexset,這將是具有 最大求和陣列。
+0

嘿謝謝你的快速回答,我知道我只有int數組,因爲我不知道如何創建一個程序來創建'n'數組。你能幫助我嗎? – Daniel 2010-04-14 01:54:05

0

要創建一個int數組的數組一個簡單的方法是做到以下幾點:

int **createArrayOfArrays(int number, int lengthOfEach) 
{ 
    int **array_of_arrays = (int**) malloc(sizeof(int*) * number); 
    int ix; 
    for(ix = 0; ix < number; ix++) 
    { 
     array_of_arrays[ix] = (int*) malloc(sizeof(int) * lengthOfEach); 
    } 
    return array_of_arrays; 
} 

不要忘記在結束時釋放所有的內存,你需要釋放每個陣列和數組數組(每malloc一個)。大小10中的每個的

0

N陣列可以在c#E製備這種方式

int n; 
     n= Convert.ToInt32(Console.ReadLine()); 


    int [,] mat=new int [n ,10]; 


    for (int i = 0; i < n; i++) 
    { 
     for (int j = 0; j < 10; j++) 
      mat[i,j] = 0; 

    }