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

Дана матрица - C++

Восстановить пароль Регистрация
 
Hironak
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 10
16.05.2011, 01:27     Дана матрица #1
Дана матрица в этой матрице найти максимальный элемент и указать номер строки и столбца, где находится этот максимальный элемент. ( в С++)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 01:27     Дана матрица
Посмотрите здесь:

C++ Дана матрица A[5,3].
C++ Дана матрица
C++ Дана матрица B[N,M]
C++ Дана Матрица
дана матрица m x N C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
C-Noob
 Аватар для C-Noob
2 / 2 / 0
Регистрация: 06.05.2011
Сообщений: 12
16.05.2011, 01:30     Дана матрица #2
Я могу быстро написать решение на C, если тебе удобно потом преобразовать его в C++.
Hironak
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 10
16.05.2011, 01:31  [ТС]     Дана матрица #3
буду очень благодарен.
C-Noob
 Аватар для C-Noob
2 / 2 / 0
Регистрация: 06.05.2011
Сообщений: 12
16.05.2011, 01:47     Дана матрица #4
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
#define M 15
#define N 10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
main(){
    int matrix[M][N], i, j, x, y;
    //Заполняем матрицу случайными числами
    srand(time(NULL));
    for(i = 0; i < M; i++)
        for(j = 0; j < N; j++)
            matrix[i][j] = rand()%11;
    //Предполагаем, что максимальный элимент имеет индекс 11
    x = 0;
    y = 0;
    for(i = 0; i < M; i++)
        for(j = 0; j < N; j++)
            if(matrix[i][j]>matrix[x][y]){
                x = i;
                y = j;
            }
    printf("Максимальный элемент имеет имеет индекс: %d%d", x+1, y+1);
    system("PAUSE");
    return 0;
}
Вот так. Только я не проверял.
Да, можно немного подкорректировать, если нужно. Я не учел, что нужно вывести номер строки и столбца, а не индекс.

Считать, что нумерация начинается с 0 или с 1?
Hironak
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 10
16.05.2011, 02:05  [ТС]     Дана матрица #5
Цитата Сообщение от C-Noob Посмотреть сообщение
srand(time(NULL));
а вот это что за команда?

Добавлено через 2 минуты
Цитата Сообщение от C-Noob Посмотреть сообщение
Да, можно немного подкорректировать, если нужно. Я не учел, что нужно вывести номер строки и столбца, а не индекс.
Считать, что нумерация начинается с 0 или с 1?
нумирация с 0.
C-Noob
 Аватар для C-Noob
2 / 2 / 0
Регистрация: 06.05.2011
Сообщений: 12
16.05.2011, 02:08     Дана матрица #6
Цитата Сообщение от Hironak Посмотреть сообщение
а вот это что за команда?
Инициализирует генератор случайных (если строго — псевдослучайных) чисел. Дело в том, что случайные числа генерируются rand'ом изходя из некоторого заданного числа, которое передается в качестве аргумента srand(). Если число задать константой, то при каждом прогоне будут генерироваться те же числа. В нашем случае одинаковые массивы. Чтобы этого избежать, я беру в качестве числа системное время. Оно, как понимаете, каждый раз меняется.

Я прогнал программу, работает. Вот только если максимальный элемент повторяется, то выводит индекс только первого встречающегося. В условии не уточнено, что делать в таком случае?
Hironak
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 10
16.05.2011, 02:11  [ТС]     Дана матрица #7
Цитата Сообщение от C-Noob Посмотреть сообщение
Я прогнал программу, работает. Вот только если максимальный элемент повторяется, то выводит индекс только первого встречающегося. В условии не уточнено, что делать в таком случае?
я эту матрицу должен вводить с клавиатуры
C-Noob
 Аватар для C-Noob
2 / 2 / 0
Регистрация: 06.05.2011
Сообщений: 12
16.05.2011, 02:16     Дана матрица #8
Цитата Сообщение от Hironak Посмотреть сообщение
нумирация с 0.
Тогда так:
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
#define M 15
#define N 10
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
main(){
        int matrix[M][N], i, j, x, y;
        //Заполняем матрицу случайными числами
        srand(time(NULL));
        for(i = 0; i < M; i++)
                for(j = 0; j < N; j++)
                        matrix[i][j] = rand()%11;
        //Предполагаем, что максимальный элимент имеет индекс 11
        x = 0;
        y = 0;
        for(i = 0; i < M; i++)
                for(j = 0; j < N; j++)
                        if(matrix[i][j]>matrix[x][y]){
                                x = i;
                                y = j;
                        }
        printf("Номер строки: %d\n", x);
        printf("Номер столбца: %d\n", y);
        system("PAUSE");
        return 0;
}
Добавлено через 4 минуты
Цитата Сообщение от Hironak Посмотреть сообщение
я эту матрицу должен вводить с клавиатуры
Тогда так

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
#define M 15
#define N 10
#include <stdio.h>
#include <stdlib.h>
 
main(){
        int matrix[M][N], i, j, x, y;
        for(i = 0; i < M; i++)
                for(j = 0; j < N; j++){
                       printf("Введите элемент с индексом %d%d: ", i, j);
                       scanf("%d", matrix[i][j]);
                }
        //Предполагаем, что максимальный элимент имеет индекс 00
        x = 0;
        y = 0;
        for(i = 0; i < M; i++)
                for(j = 0; j < N; j++)
                        if(matrix[i][j]>matrix[x][y]){
                                x = i;
                                y = j;
                        }
        printf("Номер строки: %d\n", x);
        printf("Номер столбца: %d\n", y);
        system("PAUSE");
        return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 02:24     Дана матрица
Еще ссылки по теме:

C++ Дана матрица m и n
C++ Дана матрица A(N, N)
Дана матрица(5,6) C++

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

Или воспользуйтесь поиском по форуму:
Hironak
0 / 0 / 0
Регистрация: 19.12.2010
Сообщений: 10
16.05.2011, 02:24  [ТС]     Дана матрица #9
Спасибо большое!
Yandex
Объявления
16.05.2011, 02:24     Дана матрица
Ответ Создать тему
Опции темы

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