Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 16.02.2018
Сообщений: 2

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

16.02.2018, 14:08. Показов 1913. Ответов 3

Студворк — интернет-сервис помощи студентам
Дана матрица 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
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
//---------------------------------------------------------------------------
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
srand(time(0));
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int N, M, min,max, nMin=0, nMax=0, temp, temp1;
printf("Введите матрицу A[M][N]");
printf("\n M=");
scanf("%d", &M);
printf("N=");
scanf("%d", &N);
int **mas = new int* [M]; //строки
 for (int a = 0; a < M; a++)
        mas[a] = new int[N]; //столбцы
 for(int i = 0; i < M; i++)
        for(int j = 0; j < N; j++)
                {
                mas[i][j]= rand()%100;   //заполнение
                }
 for(int i=0;i < M;i++)    //вывод
        {
        for(int j =0;j < N; j++)
        cout<< "" << mas[i][j]<<"   ";
        cout<< endl;
  }
 cout<<"\n";
 cout<<"Измененный массив"<<'\n';
for (int i=0; i < M; i++)
    {
    max = mas[i][0];
    min = mas[i][0];
    for (int j = 0; j < N; j++)
        {
        if (mas[i][j] < min)
        {
            min = mas[i][j];
            nMin = j;
        }
        if (mas[i][j] > max)
        {
            max = mas[i][j];
            nMax = j;
        }
    }
temp1=mas[i][0]; //запоминаю 1 элемент в строке
temp=mas[i][N-1]; //запоминаю послдний элемент в строке
mas[i][0]=mas[i][nMin]; //заменяю 1 элемент на минимальный
mas[i][nMin]=temp1;     //заменяю минимальный элемент на 1
mas[i][N-1]=mas[i][nMax]; //тоже самое для максимального
mas[i][nMax] = temp;
nMin = 0;
nMax = 0;
temp1=0;
temp=0;
}
 for(int i=0;i < M;i++)    //вывод
        {
        for(int j =0;j < N; j++)
        cout<< "" <<mas[i][j]<<"   ";
        cout<< endl;
        }
  system("pause");
  return 0;
}
Пример работы показал в скринах. Видно что первую (иногда и 2-ю) строчку преобразует нормально. А дальше идет сбой, не понимаю почему.
Миниатюры
Найти максимальный и минимальный элемент в каждой строке массива и поменять местами с первым и последним элементом   Найти максимальный и минимальный элемент в каждой строке массива и поменять местами с первым и последним элементом  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2018, 14:08
Ответы с готовыми решениями:

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

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

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

3
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
16.02.2018, 19:15
Как вариант
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
#include <iostream>
#include <random>
 
void Print(int** a, int n, int m) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++)
            std::cout << a[i][j] << "\t";
        std::cout << "\n";
    }
}
 
int FindMax(int** a, int i, int m) {
    int jmax = 0;
    for (int j = 1; j < m; j++)
        if (a[i][j] > a[i][jmax]) jmax = j;
    return jmax;
}
 
int FindMin(int** a, int i, int m) {
    int jmin = 0;
    for (int j = 1; j < m; j++)
        if (a[i][j] < a[i][jmin]) jmin = j;
    return jmin;
}
 
int main()
{
    std::default_random_engine gen{ std::random_device()() };
    std::uniform_int_distribution<> dist(-10, 10);
    int n, m; std::cin >> n >> m;
    int** a = new int*[n];
    for (int i = 0; i < n; i++) {
        a[i] = new int[m];
        for (int j = 0; j < m; j++)
            a[i][j] = dist(gen);
    }
    Print(a, n, m);
    for (int i = 0; i < n; i++) {
        std::swap(a[i][0], a[i][FindMax(a, i, m)]);
        std::swap(a[i][m - 1], a[i][FindMin(a, i, m)]);
    }
    std::cout << "New matrix:\n";
    Print(a, n, m);
    for (int i = 0; i < n; i++)
        delete[] a[i];
    delete[] a;
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 16.02.2018
Сообщений: 2
16.02.2018, 19:32  [ТС]
Hitoku, решил уже. Но спасибо) Я просто не учел, что у меня максимальный или минимальный элемент могут стоять на месте первого или последнего элемента.
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
87
88
89
90
91
92
93
94
//---------------------------------------------------------------------------
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
srand(time(0));
SetConsoleOutputCP(1251);
SetConsoleCP(1251);
int N, M, min,max, nMin=0, nMax=0, temp2, temp1;
printf("Введите матрицу A[M][N]");
printf("\n M=");
scanf("%d", &M);
printf("N=");
scanf("%d", &N);
int **mas = new int* [M]; //строки
 for (int a = 0; a < M; a++)
        mas[a] = new int[N]; //столбцы
 for(int i = 0; i < M; i++)
        for(int j = 0; j < N; j++)
                {
                mas[i][j]= rand()%100;   //заполнение
                }
 for(int i=0;i < M;i++)    //вывод
        {
        for(int j =0;j < N; j++)
        cout<< "" << mas[i][j]<<"   ";
        cout<< endl;
  }
 cout<<"\n";
 cout<<"Измененный массив"<<'\n';
for (int i=0; i < M; i++)
    {
    max = mas[i][0];
    min = mas[i][0];
    for (int j = 0; j < N; j++)
        {
        if (mas[i][j] < min)
        {
            min = mas[i][j];
            nMin = j;
            //cout<<"МИН в строке"<<nMin<<endl;
        }
        if (mas[i][j] > max)
        {
            max = mas[i][j];
            nMax = j;
            //cout<<"МАХ в строке"<<nMax<<endl;
        }
    }
temp1=mas[i][0];
temp2=mas[i][N-1];
if(temp2==mas[i][nMin])
{
mas[i][0]=mas[i][nMin]; //заменяю 1 элемент на минимальный
mas[i][N-1]=temp1;     //заменяю минимальный элемент на 1
mas[i][N-1]=mas[i][nMax]; //тоже самое для максимального
mas[i][nMax] =temp1;
}
else if(temp1==mas[i][nMax])
{
mas[i][N-1]=mas[i][nMax];
mas[i][0]=temp2;
mas[i][0]=mas[i][nMin];
mas[i][nMin]=temp2;
}
else
{
mas[i][0]=mas[i][nMin];
mas[i][nMin]=temp1;
mas[i][N-1]=mas[i][nMax];
mas[i][nMax]=temp2;
}
nMin = 0;
nMax = 0;
temp1=0;
temp2=0;
}
 for(int i=0;i < M;i++)    //вывод
        {
        for(int j =0;j < N; j++)
        cout<< "" <<mas[i][j]<<"   ";
        cout<< endl;
        }
  system("pause");
  return 0;
}
//---------------------------------------------------------------------------
0
 Аватар для Hitoku
1755 / 1347 / 1407
Регистрация: 28.10.2016
Сообщений: 4,267
16.02.2018, 19:37
Ну если максимальный стоит на первой позиции, то ничего критичного не случится - он "поменяется местами" сам с собой. Аналогично с минимальным
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2018, 19:37
Помогаю со студенческими работами здесь

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом
Ошибка в задаче. Может я что-то не дописал. Исправьте пожалуйста программу. Дана матрица B. Найти в каждой строке матрицы максимальный...

Найти в каждой строке матрицы максимальный и минимальный элемент и поменять их с первым и последним элементом соответственно
Товарищи нужна помощь в решении задания...заранее благодарю :bravo: Дана матрица B.Найти в каждой строке матрицы максимальный и...

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

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

Найти в каждой строке матрицы максимальный и минимальный элементы и поменять их местами с первым и последним элементом строки соответственно
здравствуйте. помогите пожалуйста решить пару задач VIII.Двумерные массивы 23 Дана матрица B. Найти в каждой строке матрицы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru