Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dynamo
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 7
#1

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

26.02.2011, 11:09. Просмотров 537. Ответов 5
Метки нет (Все метки)

Дан двумерный массив размерностью NxM (N и M дятся с клавиатуры). Найти масимальный и минимальный элементы данного массива и поменять их местами. Произвести вывод данного массива в виде матрицы.

Решите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2011, 11:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти масимальный и минимальный элементы матрицы и поменять их местами (C++):

Найти максимальный и минимальный элементы матрицы и поменять их местами - C++
Помогите пожалуйста нужно создать программу в с++ которая вычисляет определитель квадратной матрицы второго порядка и третьего...

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним - C++
Дана матрица B. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами первым и последним элементам строки...

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом - C++
Я решила задачку но что-то не так(ошибки никак не исправлю... помогите исправте ошибки,что не правильно я сделала /*Дана матрица B....

Поменять местами максимальный и минимальный элементы матрицы - C++
Здравствуйте. Помогите, пожалуйста, написать следующую программу: Дана матрица порядка n. Поменять местами максимальный и минимальный...

Поменять местами строки, содержащие минимальный и максимальный элементы матрицы - C++
Дана матрица размера 5х10. Поменять местами строки, содержащие минимальный и максимальный элементы матрицы.

В прямоугольной матрицы поменять местами строки, содержащие максимальный и минимальный ее элементы - C++
В прямоугольной матрицы поменять местами строки, содержащие максимальный и минимальный ее элементы. Большое вам спасибо!!!

5
fasked
Эксперт С++
4948 / 2528 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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;
}
0
Dynamo
1 / 1 / 0
Регистрация: 26.02.2011
Сообщений: 7
26.02.2011, 13:09  [ТС] #3
А можете в С++? И чтоб полегче было
0
MILAN
26.02.2011, 13:13
  #4

Не по теме:

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

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

Сможешь решить?
0
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;
}
1
26.02.2011, 16:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2011, 16:21
Привет! Вот еще темы с ответами:

Поменять местами в каждой строке матрицы минимальный и максимальный элементы, подскажите ошибки - C++
Помогите мне найти мои ошибки. В произвольной матрице поменять местами в каждой строке минимальный и максимальный элементы. Надо чтобы...

В каждой строке матрицы поменять местами максимальный и первый, минимальный и последний элементы - C++
Найти в каждой строке матрицы максимальный и минимальный элементы и поместить их на место первого и последнего элемента строки...

Найти минимальный и максимальный элементы контейнера и поменять их местами. - C++
вот собственно и задача Найти минимальный и максимальный элементы контейнера и поменять их местами.

Найти в массиве максимальный и минимальный элементы и поменять их местами - C++
Помогите разобраться Дан массив целых чисел. Найти в нем максимальный и минимальный элементы и поменять их местами. Задать размерность...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru