Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23

В матрице найти наибольший элемент среди наименьших каждой строки

20.10.2014, 19:26. Показов 3075. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста написать код для задачи:
"Дана действительная матрица размера nxm, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элемента с найденным значением."
Все решения которые есть на форуме не родходят, слишком код огромный.
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2014, 19:26
Ответы с готовыми решениями:

В матрице найти наименьший элемент среди наибольших элементов каждой строки
Данная действительная матрица размером n * m, все элементы которой разные. В каждой строке вибираеться элемент с наибольшим значением ,...

Найти наибольший элемент среди наименьших значений каждой строки матрицы
Пусть дана вещественная матрица размером n x m, все элементы которой различны. В каждой строке выберите элемент с наименьшим значением,...

В матрице найти в каждой строке наибольший элемент, а потом среди них найти наименьший (задача минимакса)
помогите пожалуйста срочно надо , В матрице найти в каждой строке наибольший элемент, а потом среди них найти наименьший (задача минимакса).

8
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,233
20.10.2014, 19:31
1.Возьмите любое из них как образец.
Например это
2. Составляете алгоритм решения своей задачи.
3. заменяете алгоритм образца на свой.
0
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
20.10.2014, 19:38  [ТС]
Если бы я понимал тот код, не то чтобы я его вообще не понимаю, только некоторые части. Просто с большей частью кода я еще не знаком, в процессе обучения
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,233
20.10.2014, 19:54
Цитата Сообщение от Bardo Посмотреть сообщение
Если бы я понимал тот код
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
void maximum(double**a,double *result,int n,int m)
// a[n][m] матрица, result[n] - массив для максимумов
{
    for(int i=0;i<n;i++) // цикл по номерам строк
    {
                result[i]=a[i][0]; // считаем сначала, что максимум в первом столбце
                for(int j=1;j<m;j++)// цикл по номерам столбцов
                    if(result[i]<a[i][j]) // нашли больший
                      result[i]=a[i][j];  // запомнили
    }
}
int main()
{
    int N,M;cin>>N>>M; // ввели к-во строк и столбцов
        double **x=new double*[N]; // создали N указателей для строк
    for(int i=0;i<N;i++)
              x[i]=new double[M]; // для каждого указателя выделили память, чтобы поместились все столбцы
// Тут заполнить x
    double* res=new double[N]; // создали массив для максимумов 
    maximum(x,res,N,M); // вызвали функцию поиска максимумов
    for(int i=0;i<N;i++)    // вывели что получилось
             cout<<res[i]<<endl;
    delete[] res;    // удалили все что создавали
    for(int i=0;i<N;i++)
            delete[] x[i];
    delete[] x;
    system("pause");
    return 0;
}
1
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
21.10.2014, 20:15  [ТС]
"void maximum(double**a,double *result,int n,int m)"
Можно попросить объяснить почему запись именно такая? Просто нас учат писать только int main(), а другое не обїясняют
1
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,233
21.10.2014, 20:21
синтаксис функций
C++
1
2
3
4
5
Возвращаемый_тип имя_функции(список параметров)
{
   код функции
   return выражение;
}
void означает, что возвращать ничего не надо.
выражение должно иметь возвращаемый_тип.
1
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
22.10.2014, 21:17  [ТС]
Извините, мне помог ваш код, но у меня не получается вычислить максимум из найденных значений, пишет ошибку и еще было бы хорошо,если бы вы сказали как указать индексы найденных значений.
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
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
void minimum(double**a,double *result,int n,int m)
// a[n][m] матрица, result[n] - массив для максимумов
{
    for(int i=0;i<n;i++) // цикл по номерам строк
    {
                result[i]=a[i][0]; // считаем сначала, что максимум в первом столбце
                for(int j=1;j<m;j++)// цикл по номерам столбцов
                    if(result[i]>a[i][j]) // нашли больший
                      result[i]=a[i][j];  // запомнили
    }
}
 
 
int main()
{
    int N,M;cin>>N>>M; // ввели к-во строк и столбцов
        double **x=new double*[N]; // создали N указателей для строк
    for(int i=0;i<N;i++)
              x[i]=new double[M]; // для каждого указателя выделили память, чтобы поместились все столбцы
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << "Enter element [" << i << "]" << "[" << j << "]:";
            cin >> x[i][j];
        }
    }
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << x[i][j] << ' ';
        }
        cout << endl;
    }
 
    cout << endl;
 
    double* res=new double[N]; // создали массив для максимумов 
    minimum(x,res,N,M); // вызвали функцию поиска максимумов
    for(int i=0;i<N;i++)    // вывели что получилось
             cout<<"Minimum sredi strok:" << res[i]<<endl;
 
    double* maxres = new double[N] ;
 
     for ( int i = 0; i < maxres[i];i++){
         if ( res[i] > maxres){                         // невозможно преобразовать "double *" в "double"
             maxres = res[i];
         }
     }
 
 
 
   
 
    system("pause");
    return 0;
}
Спасибо заранее.
0
Модератор
Эксперт С++
 Аватар для zss
13766 / 10960 / 6490
Регистрация: 18.12.2011
Сообщений: 29,233
22.10.2014, 22:17
Вы получили массив res.
Теперь найдите в нем максимум.
Поскольку он одномерный, то это еще проще
C++
1
2
3
4
5
6
7
8
9
10
11
double maximum(double *result,int n)
// result[n] - массив? где ищем максимум
{
    double mx=result[0];// считаем сначала, что максимум в первом элементе
    for(int i=1;i<n;i++) // цикл по всем элементам начиная со второго
    {
         if(result[i]>mx // нашли больший
            mx=result[i];  // запомнили
    }
    return mx;
}
0
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
22.10.2014, 23:26  [ТС]
Спасибо, но опять ошибка. Обязательно чтобы найти максимум в нем нужно создавать новую функцию?

Вот код который получился:
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
64
65
66
67
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
void minimum(double**a,double *result,int n,int m)
// a[n][m] матрица, result[n] - массив для максимумов
{
    for(int i=0;i<n;i++) // цикл по номерам строк
    {
                result[i]=a[i][0]; // считаем сначала, что максимум в первом столбце
                for(int j=1;j<m;j++)// цикл по номерам столбцов
                    if(result[i]>a[i][j]) // нашли больший
                      result[i]=a[i][j];  // запомнили
    }
}
 
 
    double maximum(double *result,int n)
{
    double mx=result[0];// считаем сначала, что максимум в первом элементе
    for(int i=1;i<n;i++) // цикл по всем элементам начиная со второго
    {
         if(result[i]>mx) // нашли больший
            mx=result[i];  // запомнили
    }
    return mx;
}
 
int main()
{
    int N,M;cin>>N>>M; // ввели к-во строк и столбцов
        double **x=new double*[N]; // создали N указателей для строк
    for(int i=0;i<N;i++)
              x[i]=new double[M]; // для каждого указателя выделили память, чтобы поместились все столбцы
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << "Enter element [" << i << "]" << "[" << j << "]:";
            cin >> x[i][j];
        }
    }
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << x[i][j] << ' ';
        }
        cout << endl;
    }
 
    cout << endl;
 
    double* res=new double[N]; // создали массив для максимумов 
    minimum(x,res,N,M); // вызвали функцию поиска максимумов
    for(int i=0;i<N;i++)    // вывели что получилось
             cout<<"Minimum sredi strok:" << res[i]<<endl;
 
    maximum(result); // вызвали функцию поиска максимумов
    for(int i=0;i<N;i++)    // вывели что получилось
             cout<<"Minimum sredi strok:" << mx[i]<<endl;
 
 
 
    system("pause");
    return 0;
}
Добавлено через 10 минут
Все разобрался с этим максимумом. Теперь нужны индексы элементов

Добавлено через 10 минут
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
64
65
66
67
68
69
#include <conio.h>
#include <math.h>
#include <iostream>
 
using namespace std;
 
void minimum(double**a,double *result,int n,int m)
// a[n][m] матрица, result[n] - массив для максимумов
{
    for(int i=0;i<n;i++) // цикл по номерам строк
    {
                result[i]=a[i][0]; // считаем сначала, что максимум в первом столбце
                for(int j=1;j<m;j++)// цикл по номерам столбцов
                    if(result[i]>a[i][j]) // нашли больший
                      result[i]=a[i][j];  // запомнили
    }
}
 
 
 
int main()
{
    int N,M;cin>>N>>M; // ввели к-во строк и столбцов
        double **x=new double*[N]; // создали N указателей для строк
    for(int i=0;i<N;i++)
              x[i]=new double[M]; // для каждого указателя выделили память, чтобы поместились все столбцы
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << "Enter element [" << i << "]" << "[" << j << "]:";
            cin >> x[i][j];
        }
    }
 
    for (int i=0;i < N; i++){
        for (int j=0;j < M; j++){
            cout << x[i][j] << ' ';
        }
        cout << endl;
    }
 
    cout << endl;
 
    double* res=new double[N]; // создали массив для макvv
    minimum(x,res,N,M); // вызвали функцию поиска мvbybv
    for(int i=0;i<N;i++)    // вывели что получилось
             cout<<"Minimum sredi strok:" << res[i]<<endl;
 
    double max;
    int i=0;
    int stroka=0;
    int stolbec=0;
    max = res[i];
 
    for ( int i=0; i < N; i++){
        if(max < res[i]){
            max = res[i];
        }
    }
    cout <<"Maximum sredi minimumov:" <<  max << endl;
    
 
    
 
 
 
    system("pause");
    return 0;
}
Вот код. Все работает. Необходимо только указать индекс максимума (В коде переменная max).Подскажете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.10.2014, 23:26
Помогаю со студенческими работами здесь

В матрице найти наибольший элемент КАЖДОЙ строки
Ребят, такой вопрос. Как в одной матрице найти наибольший элемент КАЖДОЙ строки и перегнать его в другую матрицу, умножив каждую строку...

Среди элементов каждой строки матрицы, отличных от данного B, найти наибольший элемент и его номер
Задана матрица размерности M*N. Среди элементов каждой строки, отличных от данного B, найти наибольший элемент и его номер.

Матрица: среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер
Задана матрица размерности M×N. Среди элементов каждой строки, отличных от заданного В, найти наибольший элемент и его номер. Число В...

[КуМир] Найти в каждой столбце матрице наибольший элемент
Здравствуйте, помогите пожалуйста с этим заданием. Найти в каждой столбце матрице наибольший элемент .

Матрица. В каждой строке найти наименьший элемент, затем среди найденных - наибольший
Дана действительная матрица размера n х m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru