O
O
Oleg2018-03-13 16:29:32
C++ / C#
Oleg, 2018-03-13 16:29:32

How to find the largest number in a 2D array?

I'm learning C++ from purecodecpp.com/archives/1158 and found a problem in the comments that I can't solve.
The array filled, divided into one-dimensional and then stalled, I don’t know how to find the largest number.
Here is the code with the condition.

/*
Π’ ΠΌΠ΅Ρ‚Π°Π½ΠΈΠΈ ΠΌΠΎΠ»ΠΎΡ‚Π° состязаСтся n спортcΠΌΠ΅Π½ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… сдСлал m бросков.
ΠŸΠΎΠ±Π΅Π΄ΠΈΡ‚Π΅Π»Π΅ΠΌ сорСвнований ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΎΡ‚ спортсмСн, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ максималСн Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎ всСм броскам.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°ΠΉΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ максимального элСмСнта Π² Π΄Π°Π½Π½ΠΎΠΌ массивС,
Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ индСксы (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ спортсмСна ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ).
Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½Π° Π²Ρ…ΠΎΠ΄ Π΄Π²Π° числа n ΠΈ m, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ числом строк ΠΈ столбцов Π² массивС.
Π”Π°Π»Π΅Π΅ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΈΠ΄Π΅Ρ‚ n строк ΠΏΠΎ m чисСл, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ элСмСнтами массива.

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅
ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ максимального элСмСнта, Π·Π°Ρ‚Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ Π½ΠΎΠΌΠ΅Ρ€ столбца,
Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ встрСчаСтся. Если Π² массивС нСсколько ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов,
Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ встрСчаСтся Ρ‚Π°ΠΊΠΎΠΉ элСмСнт,
Π° Ссли Π² этой строкС Ρ‚Π°ΠΊΠΈΡ… элСмСнтов нСсколько, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ вывСсти ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ столбца.
НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ всС строки ΠΈ столбцы Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с 0.
*/
#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <iomanip> // setw(отступ)

using namespace std;

int main() {

  setlocale(0, "");
  srand(time(NULL));

  const int ROWSIZE = 3;
  const int COLSIZE = 3;

  int arr[ROWSIZE][COLSIZE] = {};
  // Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
  /*
  for (int rowNum = 0; rowNum < ROWSIZE; rowNum++) {
    for (int colNum = 0; colNum < COLSIZE; colNum++) {
      cout << "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ исходныС значСния массива: ";
      cout << rowNum + 1 << "-я строка ";
      cout << colNum + 1 << "-я колонка ";
      cin >> arr[rowNum][colNum];
      
    }
  }
  */
  // ЗаполняСм массив случайными числами
  for (int rowNum = 0; rowNum < ROWSIZE; rowNum++) {
    cout << "Π‘Ρ‚Ρ€ΠΎΠΊΠ° " << rowNum + 1 << ": ";
    for (int colNum = 0; colNum < COLSIZE; colNum++) {
      arr[rowNum][colNum] = 1 + rand() % 9;
      cout << setw(2) << arr[rowNum][colNum];
    }
    cout << endl;
  }
  // РаздСляСм Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅
  int row[ROWSIZE]{};
  int col[COLSIZE]{};
  for (int r = 0; r < ROWSIZE; r++) {
    row[r] = arr[r - 1][COLSIZE];
    cout << row[r] << "|";
    
    for (int c = 0; c < COLSIZE; c++) {
      col[c] = arr[c][r];
      //cout << col[c] << "|" << endl;
    }
    
  }
  system("pause");
  return 0;
};

Answer the question

In order to leave comments, you need to log in

2 answer(s)
S
Stanislav Makarov, 2018-03-13
@Nipheris

Think about how to use a loop to iterate over the elements of an array and what and with what you need to compare to determine the maximum value.
The solution to the problem of finding the maximum value is easily searched for by a search engine.

D
devalone, 2018-03-13
@devalone

changed your code:

#include <iostream>
#include <string>
#include <ctime>
#include <iomanip> // setw(отступ)
#include <limits>

int main() {

  setlocale(0, "");
  srand(time(NULL));

  const size_t ROWSIZE = 3;
  const size_t COLSIZE = 3;

  int arrMaxValue = std::numeric_limits<int>::min();
  int arr[ROWSIZE][COLSIZE] = {};

  // ЗаполняСм массив случайными числами
  for (size_t rowNum = 0; rowNum < ROWSIZE; rowNum++) {
    std::cout << "Π‘Ρ‚Ρ€ΠΎΠΊΠ° " << rowNum + 1 << ": ";
    for (size_t colNum = 0; colNum < COLSIZE; colNum++) {
    	int value = 1 + rand() % 9;
    	arr[rowNum][colNum] = value;
    	if (value > arrMaxValue)
    		arrMaxValue = value;
    	
    	std::cout << std::setw(2) << arr[rowNum][colNum];
    }
    std::cout << std::endl;
  }
  
  std::cout << "Max value is " << arrMaxValue << std::endl;
  
  return 0;
};

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question