С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.02.2017
Сообщений: 42
1

Найти в каждой строке матрицы максимальный и минимальный элементы

24.04.2017, 17:56. Показов 908. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана матрица B[N,M]. Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами первым и последним элементам строки соответственно.
Я сделал , но чёт он не всегда правильно сортирует. Помогите починить)
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
#pragma hdrstop
#pragma argsused
#include <tchar.h>
#include <stdio.h>
#include <iostream.h>
#include <iomanip.h>
 
int main() {
    int n, m;
    system("chcp 1251");
    randomize();
    cout << "Введите размер столбцов n: ";
    int res = scanf("%d", &n); // защита на ввод n
    while (res != 1) {
        fflush(stdin);
        system("echo Ошибка");
        cout << "Введите размер столбцов n: ";
        res = scanf("%d", &n);
    }
    cout << "Введите размер строк m: ";
    int res2 = scanf("%d", &m); // защита на ввод m
    while (res2 != 1) {
        fflush(stdin);
        system("echo Ошибка");
        cout << "Введите размер строк m: ";
        res2 = scanf("%d", &m);
    }
    cout << "Исходная матрица" << endl;
    int **a = new int *[n];
    for (int i = 0; i < n; i++)
        a[i] = new int[m];
 
    for (int i = 0; i < n; i++) // заполняем
        for (int j = 0; j < m; j++)
            a[i][j] = rand() % 10;
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            cout << setw(4) << a[i][j] << " ";
        cout << endl;
    }
    cout << endl;
 
    int max, min, maxj, minj,t,b;
    for (int i = 0; i < n; i++) {
        min = a[i][0];
        max = a[i][0]; // объявляем начальные значения индексов max и min
        minj = 0;
        maxj = 0;
        for (int j = 0; j < m; j++) // идём по строке
        {
            if (a[i][j] > a[i][maxj]) {
                maxj = j;
            }
            if (a[i][j] < a[i][minj]) {
                minj = j;
            }
        }
 
            // swap(a[i][minj], a[i][0]);
            t = a[i][0];
            a[i][0] = a[i][minj];
            a[i][minj] = t;
 
 
            //swap(a[i][maxj], a[i][m - 1]);
            b=a[i][m-1];
            a[i][m-1]=a[i][maxj];
            a[i][maxj]=b;
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            cout << setw(4) << a[i][j] << " ";
        cout << endl;
    }
        for (int i = 0; i < n; i++)
        delete []a[i];
        delete[]a;
     system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2017, 17:56
Ответы с готовыми решениями:

Найти в каждой строке матрицы максимальный и минимальный элементы
Дана матрица B размерностью n×m. Найти в каждой строке матрицы максимальный и минимальный элементы...

Найти в каждой строке матрицы максимальный и минимальный элементы
Всем Привет_))) Ребят, у меня проблема. Задание: Дана матрица B Найти в каждой строке максимальный...

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

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

1
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
24.04.2017, 18:36 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
#include <iostream>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int main()
{
    srand( time( 0 ) );
    int n, m;
    cin >> n >> m;
    int **mas = new int* [n];
 
    for(int i=0;i<n;++i)
        mas[i] = new int [m];
 
    for(int i=0;i<n;++i)
        for(int j=0;j<m;++j)
            mas[i][j] = 1 + rand( ) % 20;
 
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<m;++j)
            cout << setw(4) << mas[i][j];
 
        cout << endl;
    }
 
    int maX, miN;
    int index_max, index_min;
 
    for(int i=0;i<n;++i)
    {
        int j = 0;
        maX = mas[i][j]; index_max = 0;
        miN = mas[i][j]; index_min = 0;
 
        for(j;j<m;++j)
        {
            if(mas[i][j] > maX)
            {
                maX = mas[i][j];
                index_max = j;
            }
 
            if(mas[i][j] < miN)
            {
                miN = mas[i][j];
                index_min = j;
            }
        }
 
        swap(mas[i][0], mas[i][index_max]);
        swap(mas[i][m - 1], mas[i][index_min]);
    }
 
    cout << endl;
    for(int i=0;i<n;++i)
    {
        for(int j=0;j<m;++j)
            cout << setw(4) << mas[i][j];
 
        cout << endl;
    }
 
    for(int i=0;i<n;++i)
        delete [] mas[i];
 
    delete [] mas;
}
Добавлено через 2 минуты
Цитата Сообщение от Den4ik280 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
for (int j = 0; j < m; j++) // идём по строке
 {
 if (a[i][j] > a[i][maxj]) {
 maxj = j;
 }
 if (a[i][j] < a[i][minj]) {
 minj = j;
 }
 }
Ты сохраняешь индексы но не сохраняешь максимальные значения чтобы потом сравнивать с последующими элементами. Должно быть как у меня
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(j;j<m;++j)
        {
            if(mas[i][j] > maX)
            {
                maX = mas[i][j];
                index_max = j;
            }
 
            if(mas[i][j] < miN)
            {
                miN = mas[i][j];
                index_min = j;
            }
        }
1
24.04.2017, 18:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2017, 18:36
Помогаю со студенческими работами здесь

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

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

В каждой строке матрицы поменять местами максимальный и минимальный элементы
Дана действительная матрица размера (nxm), (n,m меньше или равно 10). В каждой строке матрицы ...

Программа для нахождения в каждой строке матрицы G(n, m) максимальный и минимальный элементы
Напишите программу для нахождения в каждой строке матрицы G(n, m) максимальный и минимальный...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru