0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
1

Найти минимальный среди всех максимальных элементов матрицы по строкам

21.10.2018, 08:58. Показов 4517. Ответов 12

Author24 — интернет-сервис помощи студентам
В данной матрице NxN задать функцию для счета максимального элемента в строке, с помощью этой функции найти минимальный среди всех максимальных элементов строк.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2018, 08:58
Ответы с готовыми решениями:

Найти минимальный элемент среди максимальных элементов строк матрицы
двумерный массив. Размерность матрицы задаётся пользователем. Найти минимальный элемент среди...

Найти минимальный среди максимальных элементов строк матрицы
В матрице А(7,5) найти минимальный среди максимальных элементов ее строк( написать макрос )

Найти минимальный среди максимальных элементов столбцов матрицы.
В1(1).Дано целое число N (N > 2) и набор из N вещественных чисел.Набор называется пилообразным,...

Среди максимальных элементов столбцов матрицы, найти минимальный.
Сформировать двумерный массив чисел. Среди максимальных элементов столбцов, найти минимальный.

12
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
21.10.2018, 15:40 2
Лучший ответ Сообщение было отмечено else aaa как решение

Решение

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
45
46
#include <iostream>
#include <ctime>
using namespace std;
 
double MaxSumRow (double *a, int N)
{
    double max=0.0;
    for (int j = 0; j < N; j++)
    if (j==0 || a[j]>max) max=a[j];
    return max;
}     
 
int main()
{
    srand((int)time(0));
    int N;
    cout <<"N="; cin >>N;
    
      double **a = new double*[N], min=0.0;
    for (int i = 0; i < N; i++)
         a[i]=new double[N];
    
    for (int i = 0; i < N; i++)
    {
    for (int j = 0; j < N; j++)
    {
      a[i][j]=rand()%9+ 1;
      cout <<a[i][j]<<" ";
    }
    cout <<endl;
    }
    
    for (int i = 0; i < N; i++)
    {
    cout <<"max="<<MaxSumRow(a[i],N)<<endl; // информационная строка               
    if (i==0 || MaxSumRow(a[i],N)<min) min=MaxSumRow(a[i],N);                    
    } 
    cout <<"MINmax="<<min<<endl;
 
    for (int i = 0; i < N; i++)
    delete [] a[i];
    delete [] a;
 
system("pause");
return 0;
}
1
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
21.10.2018, 18:36 3
минимумальный среди максимумальных
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
 
int StringMax(int *M); //прототип функции поиска максимального элемента в строке
int N;//размер квадратной матрицы
 
int main()
{
cin >> N;
 
//определение динамического двумерного целочисленного массива NxN
    int **M = new int*[N];
        for (int i = 0; i < N; i++)
            M[i] = new int [N];
    
srand(time(NULL));//генератор случайных чисел
    
//заполнение мартицы случайными целыми числами в диапазоне от А до В включительно (и вывод в виде таблицы)    
int A = 20, B = 1000;//диапазон возможных значений
for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < N; j++)
        {
            M[i][j] = A + rand() % (B - A + 1);
            cout << setw(5) << M[i][j];
        }
        cout << endl << endl;
    }
 
 
//массив хранения максимумов в строках
int *MS = new int[N];
for (int i = 0; i < N; i++)
    MS[i] = StringMax(M[i]);
    
//вывод максимумов в строках
cout << endl;
    for (int i = 0; i < N; i++)
        cout << MS[i] << " ";
 
    
//поиск наименьшего среди максимумов
    int min = MS[0];
    for (int i = 1; i < N; i++)
        if (MS[i] < min)
            min = MS[i];
    
    cout << endl << "result=" << min << endl;
    
    return 0;
}
 
int StringMax(int *M) //функция поиска максимального элемента в строке
{
    
    int max = M[0];
    for (int j = 1; j < N; j++)
        if (M[j]>max)
            max=M[j];
    return max;
}
1
Yetty
21.10.2018, 19:41
  #4

Не по теме:

LVV, зачем советовать применять дополнительный массив там где он не нужен и не освобождать память ?

0
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
21.10.2018, 20:05 5
Цитата Сообщение от Yetty Посмотреть сообщение
зачем советовать применять дополнительный массив там где он не нужен и не освобождать память ?
Иногда, более громоздкое или нерациональное решение является более понятным
На счет памяти, Вы правы. Хотя, в данном конкретном случае это не имеет смысла, поскольку после завершения процесса память освобождается автоматически.
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
21.10.2018, 20:06  [ТС] 6
Yetty, Шикарное решение, но я нубас, можете пояснить? Вот что значит это srand((int)time(0));? Эти time вообще зачем?
0
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
21.10.2018, 20:16 7
Цитата Сообщение от else aaa Посмотреть сообщение
srand
А Вы уберите этот srand и запустите несколько раз программу.
Увидите, что комбинация "случайных" чисел будет одна и та же.
Для генерации разных комбинаций случайных чисел, аргументы srand() должны быть разными.
Один из способов это сделать - отсчитывать время, прошедшее от нулевого события time(0) или time(NULL).
Нулевым событием здесь есть 0 часов 0 минут 0 секунд 1-го января 1970 года.
Есть и другие способы. Например, отсчитывть время от запускапрограммы и т.д.
0
Yetty
21.10.2018, 20:29
  #8

Не по теме:

Цитата Сообщение от LVV Посмотреть сообщение
после завершения процесса память освобождается автоматически.
можете рассказать почему Вы так считаете ?

0
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
21.10.2018, 20:48 9
Цитата Сообщение от Yetty Посмотреть сообщение
можете рассказать почему Вы так считаете ?
Оносительно delete
0
Yetty
21.10.2018, 21:17
  #10

Не по теме:

LVV, и Вы считаете что там правильно пишут ? я дочитал до слова "очистится" и понял что дальше читать не стоит :)

0
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
21.10.2018, 22:23 11
Yetty, включите логику, и не придирайтесь к мелочам.
Оперативная память, используемая программой, не может быть занята после завершения работы этой программы.

P.S.
Написал, и сам задумался...
А если памяти ОЗУ недостаточно, то ведь задействуется дисковое пространство...
Хрен его знает...
Приведите контр-аргументы, и я поменяю своё мнение.

Добавлено через 14 минут
Можно провести эксперимент: запустить несколько раз программу, в которой определяется динамический массив огромных размеров, например, двумерный вещественный массив 1000000 на 1000000.
C++
1
2
3
4
5
6
7
8
int main()
{
    double N = 1000000;
    double **M = double int*[N];
    for (int i = 0; i < N; i++)
        M[i] = double int[N];
 
}
и убедиться, что после завершения работы программы свободной памяти меньше не становится.
0
Yetty
22.10.2018, 01:05
  #12

Не по теме:

LVV, после завершения программы память освободится, но грамотнее освобождать память явно.

0
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
22.10.2018, 05:23 13
Цитата Сообщение от Yetty Посмотреть сообщение
но грамотнее освобождать память явно.
Не спорю. Я же сказал ранее, что Вы правы.
0
22.10.2018, 05:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2018, 05:23
Помогаю со студенческими работами здесь

Найти минимальный среди максимальных по степени 2 элементов матрицы
Помогите пожалуйста решить Найти минимальный среди максимальных по степени 2 элементов матрицы...

Найти минимальный среди максимальных элементов столбцов матрицы
дана квадратная матрица порядка N.Найти минимальный среди максимальных элементов ее столбцов си

Найти минимальный среди максимальных элементов строк матрицы
найти минимальный среди максимальных элементов строк матиц Mas. Помогите решить

Найти минимальный среди максимальных элементов строк матрицы Mas
const m=4; n=5 type matrix= array of integer; var mas; matrix; {Размерность MxN} const n=5...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru