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

Найти масимальный и минимальный элементы матрицы и поменять их местами - C++

Восстановить пароль Регистрация
 
Dynamo
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 7
26.02.2011, 11:09     Найти масимальный и минимальный элементы матрицы и поменять их местами #1
Дан двумерный массив размерностью NxM (N и M дятся с клавиатуры). Найти масимальный и минимальный элементы данного массива и поменять их местами. Произвести вывод данного массива в виде матрицы.

Решите?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2011, 11:09     Найти масимальный и минимальный элементы матрицы и поменять их местами
Посмотрите здесь:

C++ Найти максимальный и минимальный элементы массива S(n) и поменять их местами
C++ Найти минимальный и максимальный элементы контейнера и поменять их местами.
Поменять местами максимальный и минимальный элементы матрицы C++
Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом C++
C++ Массивы. Найти в матрице максимальный и минимальный элементы, поменять местами строки, в которых они расположены
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
26.02.2011, 11:57     Найти масимальный и минимальный элементы матрицы и поменять их местами #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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <stdlib.h>
 
 
int main()
{
    size_t i = 0;
    size_t j = 0;
    size_t rows = 0;
    size_t columns = 0;
 
    int **data_ptr = NULL;
    int * minimum = NULL;
    int * maximum = NULL;
    int buffer = 0;
 
    printf("Input N: ");
    scanf ("%u", &rows);
 
    printf("Input M: ");
    scanf ("%u", &columns);
 
    // memory allocating 
    if ( (data_ptr = (int **) calloc (rows, sizeof(*data_ptr))) == NULL) {
        fprintf (stderr, "fail to allocate memory \n");
        exit (1);
    }
 
    for (i = 0; i < rows; ++i) {
        if ( (data_ptr[i] = (int *) calloc (columns, sizeof(**data_ptr))) == NULL) {
            fprintf (stderr, "fail to allocate memory \n");
            for ( ; i >= 0; --i)
                free (data_ptr[i]);
 
            exit (1);
        }
    }
 
    // fill data
    for (i = 0; i < rows; ++i) {
        for (j = 0; j < columns; ++j)
            data_ptr[i][j] = rand() % 100;
    }
 
    // print data
    printf ("\nbefore swaping\n");
    for (i = 0; i < rows; ++i) {
        for (j = 0; j < columns; ++j)
            printf("%3d ", data_ptr[i][j]);
        printf("\n");
    }
 
    // initial value of min and max
    minimum = maximum = &data_ptr[0][0];
 
    // find min and max
    for (i = 0; i < rows; ++i) {
        for (j = 0; j < columns; ++j) {
            if (data_ptr[i][j] > *maximum)
                maximum = &data_ptr[i][j];
            if (data_ptr[i][j] < *minimum)
                minimum = &data_ptr[i][j];
        }
    }
 
    // swap
    buffer = *maximum;
    *maximum = *minimum;
    *minimum = buffer;
 
    // print data
    printf ("\nafter swaping\n");
    for (i = 0; i < rows; ++i) {
        for (j = 0; j < columns; ++j)
            printf("%3d ", data_ptr[i][j]);
        printf("\n");
    }
 
    // memory deallocating
    for (i = 0; i < rows; ++i)
        free (data_ptr[i]);
    free (data_ptr);
 
    system ("PAUSE");
    return 0;
}
Dynamo
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 7
26.02.2011, 13:09  [ТС]     Найти масимальный и минимальный элементы матрицы и поменять их местами #3
А можете в С++? И чтоб полегче было
MILAN
26.02.2011, 13:13
  #4

Не по теме:

Что то мне кажется, что
Dynamo, и CyberJohn - ето одно лицо.

Dynamo
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 7
26.02.2011, 13:18  [ТС]     Найти масимальный и минимальный элементы матрицы и поменять их местами #5
нет))) просто он мой одногрупник

Сможешь решить?
antid0t
 Аватар для antid0t
4 / 4 / 0
Регистрация: 23.02.2011
Сообщений: 42
26.02.2011, 16:21     Найти масимальный и минимальный элементы матрицы и поменять их местами #6
А значения каждого элемента массива также вводятся с клавиатуры?

Добавлено через 17 минут
Вот что-то похожее на примере матрицы 3х3. Если это подойдет, то останеться лишь дописать ввод M и N и заменить размерность матрицы (и циклов) на [M][N]
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
#include <stdio.h>
#include <iostream.h>
 
void main () {
    int nMax[3]= {1,1,1};
    int nMin[3]={9999,1,1}; 
    int nArray[3][3]; // для примера возьмем матрицу 3х3
    
    for(int i=0; i<3; i++) {
        for(int j=0; j<3; j++) {
            cin >> nArray[i][j];} // задаем элементы матрицы с клавиатуры
    } cout << "\n";
    
    for(int q=0; q<3; q++) {
        for(int k=0; k<3; k++) {        
            
            if (nArray[q][k]>nMax[0]) { // находим макс и мин элементы
                nMax[0]=nArray[q][k];
                nMax[1]=q;
                nMax[2]=k;}
            if (nArray[q][k]<nMin[0]) {
                nMin[0]=nArray[q][k];
                nMin[1]=q;
                nMin[2]=k; }
            
            cout << nArray[q][k] << " ";} // выводим заданую матрицу
    cout << "\n";}
    cout << "\n";
 
    nArray[nMax[1]][nMax[2]]=nMin[0]; // меняем местами мак и мин значения
    nArray[nMin[1]][nMin[2]]=nMax[0];
        
    for(int w=0; w<3; w++) {
        for(int e=0; e<3; e++) {
            cout << nArray[w][e] << " ";} // выводим измененую матрицу
    cout << "\n";}      
    
    return;
}
Yandex
Объявления
26.02.2011, 16:21     Найти масимальный и минимальный элементы матрицы и поменять их местами
Ответ Создать тему
Опции темы

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