2010-04-14 46 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; 

    }