Как в двухмерном массиве найти максимальный элемент

в C# так не работает(хотя в некоторых других языках так можно написать).

C# язык со статической типизацией https://ru.wikipedia.org/wiki/Статическая_типизация

В вашем случае вы не можете изменить тип вашего массива во время работы программы.

int[,] myArr = new int[4, 5];

Во в этой строчке, слева вы сказали(для упрощения), что переменная myArr принадлежит типу int[]. Теперь туда можно добавлять только числа и исправить это нельзя.

Вы дали очень мало описания и возможно не прочитали, как задавать вопросы. Нужно задать конкретный вопрос, ибо в данный момент он звучит “Я ничего не сделал, сделайте за меня”(поэтому вам ставят минусы, а не потому что вопрос плохой).

Для того, чтобы вам ответили, задайте конкретный вопрос. В данном случае он звучит “Как мне вставить в массив чисел символ?”

Дело в том, что это форум архив знаний, состоящий из вопросов. Вопрос и ответ должен содержать в себе страницу учебника. Представьте, что вы пишете Введение в тему занятия. В ответах пишутся детали, а в комментариях обсуждаете с коллегами, как лучше написать.

Подсказка, как сделать

Если правильно оформите вопрос, я на него отвечу. Пока пусто.

Студворк — интернет-сервис помощи студентам

Всем доброго времени суток. Помогите, пожалуйста, с задачей…

Инициализировать массив n x n. n вводит пользователь. Найти максимальный элемент в массиве и его положение: номер строки, номер столбца.

Собственно, вот мои наработки, но не знаю как определить положение… Заранее спасибо!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
using namespace std;
int main()
{
int n, count=0, sum=0, b=0, max=0, str, stl;
float d;
 
cout<<"Vvedite kol-vo elementov po gorizontali, po vertikali:n";
cin>>n;
int Mas[n][n];
for (int i=0; i<n; i++)//Заполнение масива
    {
        for (int j=0; j<n; j++)
        {
            Mas[i][j]=rand()%100;
        }
    }
 
for (int i=n-1; i>=0; i--)//Вывод масива на экран
    {     
        cout<<endl; 
        for (int j=0; j<n; j++ )                
        { 
            cout<<Mas[i][j]<<"t";
        }   
        cout<<"n";     
    }
 
for (int i=0; i<n; i++)//Нахождение максимального элемента и его положения
{
    for (int j=0; j<n; j++)
    {
        
        if (Mas[i][j]>max)
        {
            max=Mas[i][j];
        }
        str=i+1;
        stl=j+1;
    }
}
cout<<"nMaximum: "<<max<<" Raspolojen v "<<str<<" stroke, stolbze "<<stl;
return 0;
}

Изучаю С++ по 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;
};

В общем, я вот так записала программу но что- то в ней не то, потому что она не максимальный выводит
var a:array[1..10,1..5] of integer;
i,j,max:integer;
begin
randomize;
for i:=1 to 10 do
begin
for j:=1 to 5 do
begin
a[i,j]:=random(50);
write(a[i,j]:4);
end;
writeln;
end;

for i:=1 to 10 do
max:=a[i,1];
begin

for j:=1 to 5 do

begin
if a[i,j]>max then max:=a[i,j];
end;
writeln(‘max=’,max);
end;
writeln;
end.

Все равно что то не то. Вот какой ответ получаем в результате программы (см. ниже)
20 30 33 46 22
27 22 32 23 31
0 21 43 34 30
16 41 24 2 46
36 10 46 18 24
46 4 23 7 25
0 36 36 27 10
14 10 39 41 33
21 40 42 4 47
47 41 35 14 7
max=46
max=46
max=46
max=46
max=46
max=46
max=46
max=46
max=47
max=47.Есть еще у кого нибудь варианты?

А нет все все спссибо та прога правильна просто надо было вывод поставить перед последним эндом!!)))

I am trying to find min (by row) and max (by column) element in two-dimensional (4,4) array and then store them in new array (5,5).

That is how it should look for new array (5,5):

1 2 3 4 min
5 6 7 8 min
4 4 4 5 min
3 5 5 6 min
m m m m  0

*m – max

Here it is the entire code:

#include <iostream>
using namespace std;
int main() {
    int A[4][4];/*First array*/
    int i, j;


    for (i = 0; i < 4; i++)
        for (j = 0; j < 4; j++) {
            cout << "n A[" << i + 1 << "][" << j + 1 << "]=";
            cin >> A[i][j];
        }

    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++)
            cout << A[i][j] << "t";

        cout << "n";
    }
    {
        int min[4];/* find min on each row*/
        for (i = 0; i < 4; i++) {
            min[i] = A[0][i];
            for (j = 1; j < 4; j++) {
                if (min[i] > A[i][j])
                    min[i] = A[i][j];
            }
        }
        int newarr[5][5];/* here i create the new array 5,5)*/
        int max[5] = { 1,2,3,4,5 };
        for (i = 0; i < 4; i++) {
            for (j = 0; j < 4; j++) {
                newarr[i][j] = A[i][j];
                newarr[i][5] = max[i];
            }
        }

        for (j = 0; j < 4; j++)
            newarr[5][j] = min[j];
        cout << newarr[5][j] << "t";
        cout << "n";
}

}

I put random elements to max. Because so far I only test. But once I started my program it show correct only the first array. And where should be the new array it shows zero. Here it is the outcome of the debugging:

5   4   3   1   
5   6   7   9   
4   2   3   9   
4   8   4   6   
0   

How to fix it?
And how to put zero in the last element (as you can see in the first table for the new array).

Добавить комментарий