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

В матрице поменять местами заданную строку и строку содержащую минимальный элемент среди неотрицательных элементов

19.04.2019, 20:27. Показов 1569. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задание: В заданной матрице поменять местами: 1) строку с указанным номером и строку, содержащую минимальный элемент среди элементов с неотрицательным значением. 2) первую строку и строку, содержащую максимальный элемент среди элементов с неположительным значением.
__
ПРОБЛЕМА! - Не меняет строки матрицы, в чем ошибка???

p.s. В программе представлен 1 пункт из задания. (по возможности помогите и со 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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include<iostream>
#include <locale.h>
#include <cctype>
#include<stdlib.h>
using namespace std ;
 
 
using namespace std ;
const int RAZ = 10 ;
typedef int telem ;
typedef telem tmatr[RAZ][RAZ] ;
void input_matr(tmatr, int&, int&) ;
void minimal(tmatr b, int Ryad, int n, int m);
void output(tmatr a, int n, int m);
void zamena(tmatr a, int Ryad);
 
int main()
 
{
 
 
setlocale(LC_ALL,"Russian");
    tmatr a ;
 int imax ;
 telem max ;
 int str ;
 int sto ;
int R;
 
 input_matr(a, str, sto) ;
 minimal(a, R, str, sto);
 
//Вывод результата поиска строки с минимальным элементом
cout  << R<< endl;
cout << "Минимальный  элемент находится в  " << R << "-й строке исходного массива " << endl << endl;
//zamena(a,R);
 
}
 //main_end_________________________________
 
 
 
//Ввод исходных данных
 
void input_matr(tmatr a, int &str, int &sto)
{
cout << "Введите число строк в массиве <= " << RAZ << " " ;
cin >> str ;
cout << "Введите число столбцов в массиве <= " << RAZ << " " ;
cin >> sto ;
cout << "Введите построчно через пробел значения элементов" << endl ; cout << "двумерного массива размера " << str << "x" << sto << endl ;
cout << "После ввода каждой строки нажимайте <Enter>" << endl ;
for(int i = 0 ; i < str ; i++)
for(int j = 0 ; j < sto ; j++) cin >> a[i][j] ;
return ; }
 
 
void output(tmatr a, int n, int m)
{
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        cout << a[i][j] << " ";
     cout << endl;
}
}
 
 
 
void minimal (tmatr b, int Ryad, int n, int m)
{
int min = b[1][1];
 
int i,j;
 
for (int i = 1; i<=n; i++)
{
for (int j = 1; j<=m; j++)
{
if (b[i][j] < min)
{
min = b[i][j];
Ryad = i;
        }
    }
}
 
cout << Ryad;
 
}
 
/* /void zamena (tmatr a, int Ryad)
{
int i = 0;
int j = 0;
    int tmp = a[0][j];
for (int i = 0; i < n; i++ && j++)
{ tmp = a[0][j];
  a[0][j] = a[Ryad][j];
  a[Ryad][i] = tmp;
}
}
*/
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2019, 20:27
Ответы с готовыми решениями:

В матрице поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент
В произвольной матрице i=1, M , j=1, N поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный...

В матрице поменять местами строку, содержащую минимальный элемент, со строкой, содержащей максимальный элемент массива
Помогите пожалуйста поправить код... Задание:В двумерном N*K массиве целых чисел поменять местами строку, содержащую минимальный элемент...

В заданной матрице поменять местами строку, содержащую максимальный элемент со строкой, содержащей минимальный
Надо сделать к понедельнику. Задание по ПЯВУ, состоит из двух частей. Если первую часть я понимаю, как одномерный массив, то вторую нет....

8
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
20.04.2019, 01:25
sayurimayuri,
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
typedef int size_type; 
typedef int value_type;
 
template<class T, size_type r, size_type c, class Binary_foo, class Unary_foo>
size_type find_row(T(&matrix)[r][c], Binary_foo bf, Unary_foo uf)
{
    size_type row_ret{};
    T compare{};
    bool flag{};
    for (size_type row{}; row < r; ++row)
        for (size_type col{}; col < c; ++col)
            if (flag && uf(matrix[row][col]) && bf(matrix[row][col], compare))
            {
                row_ret = row;
                compare = matrix[row][col];
            }
            else
                if (!flag && uf(matrix[row][col]))
                {
                    flag = true;
                    row_ret = row;
                    compare = matrix[row][col];
                }
    return row_ret;
}
 
template<class T, size_type r, size_type c>
std::ostream& operator<<(std::ostream& os, T(&matrix)[r][c])
{
    for (size_type row{}; row < r; ++row)
    {
        for (size_type col{}; col < c; ++col)
            os << matrix[row][col] << ' ';
        os << std::endl;
    }
    return os;
}
 
int main()
{
    const size_type rows = 4;
    const size_type cols = 5;
    value_type matrix [rows][cols]
    {
        {-4,-3, 3, 5, 5},
        { 2,-3, 0, 4, 6},
        { 3,-8,-2, 5, 7},
        { 0, 5, 6,-1, 8}
    };
    std::cout << matrix << "\nchoose the line: ";
 
    size_type user_row{};
    while (std::cin >> user_row && user_row < 1 && rows < user_row);
    if (!std::cin) return -1;
    --user_row;
 
    size_type to_swap = find_row(matrix, std::less(), [](value_type val)
    {
        return std::isgreaterequal(val, 0);
    });
    std::swap(matrix[user_row], matrix[to_swap]);
 
    std::cout << "\ntask one:\n" << matrix;
 
    user_row = 0;
    to_swap = find_row(matrix, std::greater(), [](value_type val)
    {
        return std::islessequal(val, 0);
    });
    std::swap(matrix[user_row], matrix[to_swap]);
 
    std::cout << "\ntask two:\n" << matrix;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 02:17
sayurimayuri, таких минимальных в матрице может быть несколько и находиться они могут в разных строках, поэтому код для такого условия:
В заданной матрице поменять местами: 1) строку с указанным номером и строку, содержащую первый минимальный элемент среди элементов с неотрицательным значением.
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
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n, m, index_min=0, k;
    cout << "n="; cin >> n;
    cout << "m="; cin >> m;
    
      double **a = new double*[n], min_pos=-1.0; 
    for (int i = 0; i < n; i++)
       a[i]=new double[m];
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {
    a[i][j]=rand()%19 - 9;
    if (a[i][j]>=0.0 && (min_pos==-1.0 || a[i][j]<min_pos)) {min_pos=a[i][j];index_min=i;}
    cout << setw(2) << a[i][j] << " ";
    }
    cout << "\n";
    }
    
    if (min_pos!=-1.0)
    {    
    cout << "Row="; cin >> k;
    
    swap (a[k-1],a[index_min]);
    
    for (int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++) 
    cout << setw(2) << a[i][j] << " ";  
    cout << "\n";
    }
    }
    else cout << "Non-negative elements are absent\n";
 
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
 
system("pause");
return 0;
}
вторую часть задания реализуйте самостоятельно.
0
1 / 1 / 0
Регистрация: 14.12.2017
Сообщений: 63
20.04.2019, 09:37  [ТС]
Yetty, спасибо вам, который раз!)
а вторая часть программы там меняются только знаки "меньше/больше"?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 12:40
Цитата Сообщение от sayurimayuri Посмотреть сообщение
вторая часть программы там меняются только знаки "меньше/больше"?
знаки поменять конечно нужно. прочитайте условие 2) части - потребуются ещё некоторые корректировки. кроме того, решите как соединить две части задачи - организовать выбор ( первая часть или вторая часть ) или просто последовательно выполнить. однотипные действия желательно вынести в функции.
0
1 / 1 / 0
Регистрация: 14.12.2017
Сообщений: 63
20.04.2019, 12:52  [ТС]
Yetty, у меня появился вопрос по вашей программе. а зачем вы задаете ряд, для перестановки строк? если должно по условию менять строку с минимальным элементом?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 13:00
Цитата Сообщение от sayurimayuri Посмотреть сообщение
зачем вы задаете ряд
какой ряд ? есть матрица, она случайным образом заполняется числами, одновременно находится первый min элемент среди элементов с неотрицательным значением и его индекс. затем строка с номером k меняется со строкой с этим индексом.
0
1 / 1 / 0
Регистрация: 14.12.2017
Сообщений: 63
20.04.2019, 19:35  [ТС]
Yetty, таак. меня смутило, то что рандомом задается матрица, но это ладно.. но вот потом программа спрашивает какую строчку поменять, когда она должна сама определять где минимальное значение и менять.
я полистала форум, и нашла похожую тему. вы там ответили программой и она более менее подходит под мое условие. я ее переделала под себя немного, но вот вопрос, как ее сделать через статический двумерный массив??
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.04.2019, 19:52
sayurimayuri, рандом чтобы быстрее заполнять, как переделать под ввод с клавиатуры Вы уже спрашивали в другой теме, если не ошибаюсь.
Цитата Сообщение от sayurimayuri Посмотреть сообщение
она должна сама определять
номер первой строки для обмена - задаётся, индекс второй строки для обмена (с первым min) находится.
в чём Ваш вопрос ?
Цитата Сообщение от sayurimayuri Посмотреть сообщение
я ее переделала под себя немного
я сбросил код под условие задачи. что-то в нём переделывать - Ваше право, но сомневаюсь, что это нужно.
Цитата Сообщение от sayurimayuri Посмотреть сообщение
как ее сделать через статический двумерный массив?
если размер массива задаётся с клавиатуры, применяется динамический массив
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.04.2019, 19:52
Помогаю со студенческими работами здесь

В матрице поменять местами первую строку и строку содержащую максимальный отрицательный элемент
В заданной матрице из целых чисел поменять местами первую строку и строку,содержащую максимальный отрицательный элемент матрицы.

Поменять в матрице местами строку с максимальным элементом и строку, содержащую min элемент
// 1=Указатели. Поменять местами строки.cpp : Defines the entry point for the console application. // A - динамичсекий массив. Необходимо...

Поменять в матрице местами первую строку и строку, содержащую максимальный неположительный элемент
Задание: В заданной матрице поменять местами первую строку и строку, содержащую максимальный элемент среди элементов с неположительным...

В матрице поменять местами первую строку и строку, содержащую наибольший элемент матрицы
Помогите сделать работы через функции и процедуры... 1)Дан массив b1,b2…b2n . Написать программу построения массивов x1,x2…xn и...

Найти строку, содержащую минимальный элемент матрицы. Найденную строку поменять местами с 4-ой строкой
Дана матрица А(5,3) 1. Найти строку, содержащую минимальный элемент матрицы 2. Найденную строку поменять местами с 4-ой строкой. ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru