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

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

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

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

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

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

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

8
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
20.10.2014, 19:31 2
1.Возьмите любое из них как образец.
Например это
2. Составляете алгоритм решения своей задачи.
3. заменяете алгоритм образца на свой.
0
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
20.10.2014, 19:38  [ТС] 3
Если бы я понимал тот код, не то чтобы я его вообще не понимаю, только некоторые части. Просто с большей частью кода я еще не знаком, в процессе обучения
0
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
20.10.2014, 19:54 4
Цитата Сообщение от 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  [ТС] 5
"void maximum(double**a,double *result,int n,int m)"
Можно попросить объяснить почему запись именно такая? Просто нас учат писать только int main(), а другое не обїясняют
1
Модератор
Эксперт С++
 Аватар для zss
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
21.10.2014, 20:21 6
синтаксис функций
C++
1
2
3
4
5
Возвращаемый_тип имя_функции(список параметров)
{
   код функции
   return выражение;
}
void означает, что возвращать ничего не надо.
выражение должно иметь возвращаемый_тип.
1
1 / 1 / 0
Регистрация: 06.10.2014
Сообщений: 23
22.10.2014, 21:17  [ТС] 7
Извините, мне помог ваш код, но у меня не получается вычислить максимум из найденных значений, пишет ошибку и еще было бы хорошо,если бы вы сказали как указать индексы найденных значений.
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
13730 / 10926 / 6482
Регистрация: 18.12.2011
Сообщений: 29,161
22.10.2014, 22:17 8
Вы получили массив 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  [ТС] 9
Спасибо, но опять ошибка. Обязательно чтобы найти максимум в нем нужно создавать новую функцию?

Вот код который получился:
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
22.10.2014, 23:26
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.10.2014, 23:26
Помогаю со студенческими работами здесь

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

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

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

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

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


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

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

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Использование кэша Laravel - полный гайд
bytestream 18.02.2025
Кэширование - один из наиболее эффективных способов повышения производительности веб-приложений. В современном мире, где скорость загрузки страниц напрямую влияет на удержание пользователей и. . .
Создаем REST API в Laravel с аутентификацией и Passport
bytestream 18.02.2025
Разработка современных веб-приложений все чаще требует создания надежного и хорошо структурированного API. REST API стал стандартом де-факто для построения взаимодействия между клиентской и серверной. . .
Пайплайны в Laravel - полный гайд
bytestream 18.02.2025
Разработка современных веб-приложений часто требует обработки сложных процессов, состоящих из множества последовательных шагов. Например, при создании системы комментариев может потребоваться. . .
Как правильно использовать @required в Symfony
bytestream 18.02.2025
При разработке приложений на Symfony мы часто сталкиваемся с необходимостью внедрения зависимостей. Фреймворк предоставляет несколько способов управления этим процессом, и одним из таких инструментов. . .
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru