2017-05-20 307 views
-2

我实际的问题是如何找到的随机数的数组最大值和最小值?我已经尝试了很多不同的逻辑,我已经通过这些链接了下面提及,但可能“NT得到reuslt,任何指导,将是appreciateable从二维数组查找最小值和最大值

https://www.youtube.com/watch?v=yes0HMZWxUo&t=447s Put a multidimensional array into a one-dimensional array

#include<iostream> 
#include<cstdlib> 
#include<conio.h> 

void populateArray(); 
void displayArray(); 
void findMaxMinNumber(int[5][5]); 

main(){ 
    system("cls"); 
    int rows,columns = 5; 
    displayArray(); 
} 

void populateArray(){ 

    int randomNumber; 
    int minMax[5][5]; 

    for(int rowCount = 0; rowCount < 5; rowCount++){  

    for(int columnCount = 0; columnCount < 5; columnCount++){ 
     randomNumber = rand() % 100 + 1; 
     cout<<randomNumber; 
     minMax[rowCount][columnCount] = randomNumber; 

     if(randomNumber < 10){ 
      cout<<"  "; 
     } 
     else if(randomNumber >= 10){ 
      cout<<"  "; 
     } 
     } 
     cout<<endl; 
    } 
findMaxMinNumber(minMax); 
} 
void displayArray(){ 
    cout<<"Displaying array's data..."<<endl; 
    cout<<"------------------------------"<<endl; 
    populateArray(); 
} 
void findMaxMinNumber(int arr[5][5]){ 

    int rowMax = 0; 
    int colMax = 1; 
    int rowMin = 0; 
    int colMin = 1; 
    cout<<endl; 
    for(int i = 0; i < 5; i++){ 
     rowMax++; 
     rowMin++; 
    for(int j = 0; j < 5; j++){ 
     if(arr[i][j] < arr[rowMax][colMax]){ 
      //cout<<endl<<arr[i][j]; 
      rowMax = i; 
      colMax = j; 
     } 
     if(arr[i][j] > arr[rowMin][colMin]){ 
      rowMin = i; 
      colMin = j; 
     } 
     colMax++; 
     colMin++; 
    } 

} 
cout<<endl<<"The max is :"<<arr[rowMax][colMax]; 
cout<<endl<<"The min is :"<<arr[rowMin][colMin]; 
} 
+0

你为什么增加这四个“索引”变量?为什么他们不都是从'0'开始?最后一件事,修理你的缩进。 – LogicStuff

+0

后面增加这些变量的逻辑与阵列中的每一下索引值匹配当前索引值,找到wheather它是最大或最小 – noman

+0

你这样做有'i'和'j'了。 – LogicStuff

回答

0
void fillUpArray(int newArray[5][5]) 
{ 
    for (int i = 0; i < 5; ++i) 
    { 
     for (int j = 0; j < 5; ++j) 
     { 
      int randomNumber = rand() % 100 + 1; 
      printf("Random number[%d][%d]: %d\n", i, j, randomNumber); 
      newArray[i][j] = randomNumber; 
     } 
    } 
} 

void printMinimumMaximum(int myArray[5][5]) 
{ 
    int minimum = myArray[0][0]; 
    int maximum = myArray[0][0]; 

    for (int i = 0; i < 5; ++i) 
    { 
     for (int j = 0; j < 5; ++j) 
     { 
      if (myArray[i][j] < minimum) 
      { 
       minimum = myArray[i][j]; 
      } 
      if (myArray[i][j] > maximum) 
      { 
       maximum = myArray[i][j]; 
      } 
     } 
    } 

    printf("Minimum: %d\n", minimum); 
    printf("Maximum: %d\n", maximum); 
} 

int main() 
{ 
    int minMax[5][5]; 
    fillUpArray(minMax); 
    printMinimumMaximum(minMax); 
    return 0; 
} 
+0

我明白了,它工作:) – noman

1
void findMaxMinNumber(int arr[5][5]){ 
    int* start = &arr[0][0]; 

    cout<<endl<<"The max is :" << *std::max_element(start, start + 5*5); 
    cout<<endl<<"The min is :" << *std::min_element(start, start + 5*5); 
} 
+0

我对编程非常初级的水平,我还没有指针和工作我没有使用过std ::之前,我没有它的概念。我试图找到使用数组 – noman

+0

有[minmax_element(http://en.cppreference.com/w/cpp/algorithm/minmax_element)太,BTW。 –

相关问题