Задать вопрос
@Screpka

Как найти наибольшее число в двумерном массиве?

Изучаю С++ по purecodecpp.com/archives/1158 и нашел задачку в комментариях, которую не могу решить.
Массив заполнил, разделил на одномерные и тут заглох, не знаю как найти наибольшее число.

Вот сам код с условием.
/*
В метании молота состязается 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;
};
  • Вопрос задан
  • 7295 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
Подумайте как использовать цикл для перебора элементов массива и что и с чем нужно сравнивать для определения максимального значения.

Решение задачи поиска максимального значения легко ищется поисковиком.
Ответ написан
devalone
@devalone
̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
переделал твой код:
#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;
};
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы