Форум программистов, компьютерный форум CyberForum.ru

Определить значение и индексы максимального элемента главной диагонали матрицы - C++

Восстановить пароль Регистрация
 
Deizven
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 4
12.06.2013, 22:02     Определить значение и индексы максимального элемента главной диагонали матрицы #1
Помогите, будьте любезны.
Массив матрица - B(N,N)
Определить значение и индексы максимального элемента главной диагонали матрицы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 22:02     Определить значение и индексы максимального элемента главной диагонали матрицы
Посмотрите здесь:

C++ Рассчитывается произведение минимального и максимального элемента ниже главной диагонали массовых
Найти в каждом столбце матрицы индексы максимального элемента C++
C++ Создать функцию, возвращающую индексы максимального элемента матрицы
Вывести индексы максимального элемента (матрицы, отрицательные числа) C++
C++ Составить функцию нахождения максимального элемента Мх в диагонали матрицы, параллельной главной диагонали
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 105
12.06.2013, 22:30     Определить значение и индексы максимального элемента главной диагонали матрицы #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include<iostream>
#include<ctime>
 
using namespace std;
 
int main(){
    srand(time(NULL));
    int **arr, N, max = 0, indexstr, indexstolb;
    cout << "enter N : ";
    cin >> N;
    /*cout << "enter M : ";
    cin >> M;*/
    arr = new int *[N];
    for(int i = 0; i < N; i++)
        arr[i] = new int [N];
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            arr[i][j] = rand() % 5;
    cout << "your arr : " << endl;
    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++)
            cout << arr[i][j] << "  ";
        cout << endl;
    }
 
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
        {
            if(i == j)
            {
                if(arr[i][j] > max){
                    max = arr[i][j];
                    indexstr = i;
                    indexstolb = j;
                }
            }
        }
        cout << "MAX = " << max << endl;
        cout << "Stroka - " << indexstr <<  endl;
        cout << "Stoldec - " << indexstolb << endl;
}
Lvaruky
8 / 8 / 0
Регистрация: 10.05.2013
Сообщений: 26
12.06.2013, 22:37     Определить значение и индексы максимального элемента главной диагонали матрицы #3
Nikolai699, главная диагональ имеет индексы [i][i], зачем плодить переменные и такое сложное условие?

Цитата Сообщение от Nikolai699 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
        {
            if(i == j)
            {
                if(arr[i][j] > max){
                    max = arr[i][j];
                    indexstr = i;
                    indexstolb = j;
                }
            }
        }
можно ведь все и в одном цикле организовать:
C++
1
2
3
4
5
6
7
for (int i = 0; i < N; i++) {
        if(*(*(mas+i)+i)>max) {
            max=*(*(mas+i)+i);
            res=i;
        }
    }
    cout<<max<<"["<<res<<"]["<<res<<"]";
Также теоретически максимум может быть меньше нуля, поэтому лучше инициализировать max значанием первого элемента
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 105
12.06.2013, 22:54     Определить значение и индексы максимального элемента главной диагонали матрицы #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Lvaruky, ну да можно было чуть чуть попроще сделать

Добавлено через 14 минут
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
#include<iostream>
#include<ctime>
 
using namespace std;
 
int main(){
    srand(time(NULL));
    int **arr, N, max, index;
    cout << "enter N : ";
    cin >> N;
    arr = new int *[N];
    for(int i = 0; i < N; i++)
        arr[i] = new int [N];
    for(int i = 0; i < N; i++)
        for(int j = 0; j < N; j++)
            arr[i][j] = rand() % 5;
    max = arr[1][1];
    cout << "your arr : " << endl;
    for(int i = 0; i < N; i++){
        for(int j = 0; j < N; j++)
            cout << arr[i][j] << "  ";
        cout << endl;
    }
    for(int i = 0; i < N; i++)
    {
        if(arr[i][i] > max)
        {
            max = arr[i][i];
            index = i;
        }
    }
    cout << "MAX = " << max << endl;
    cout << "Stroka - " << index <<  endl;
    cout << "Stoldec - " << index << endl;
}

подправил, учитывая замечания выше))
Lvaruky
8 / 8 / 0
Регистрация: 10.05.2013
Сообщений: 26
12.06.2013, 23:53     Определить значение и индексы максимального элемента главной диагонали матрицы #5
Nikolai699, не подумайте, что я придираюсь, но если
Цитата Сообщение от Nikolai699 Посмотреть сообщение
C++
1
max = arr[1][1];
элемент[1][1] и будет максимумом, то переменная index даже не инициализируется, т.к. программа не зайдет в этот кусок кода:

Цитата Сообщение от Nikolai699 Посмотреть сообщение
C++
1
2
3
4
5
if(arr[i][i] > max)
     {
       max = arr[i][i];
       index = i;
     }
Nikolai699
16 / 16 / 3
Регистрация: 15.03.2012
Сообщений: 105
13.06.2013, 08:40     Определить значение и индексы максимального элемента главной диагонали матрицы #6
Lvaruky, да все замечания по делу у вас)
Yandex
Объявления
13.06.2013, 08:40     Определить значение и индексы максимального элемента главной диагонали матрицы
Ответ Создать тему
Опции темы

Текущее время: 03:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru