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

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

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

Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t - C++

28.06.2012, 16:01. Просмотров 1050. Ответов 6
Метки нет (Все метки)

Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 16:01     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t
Посмотрите здесь:

Поменять местами строку с минимальным элементом на главной диагонали со строкой с заданным номером t. C++
Задана квадратная матрица, размерности n, где n=2z. Поменять местами строку с минимальным элементом на главной диагонали со строкой с ...

C++ Переставить строку матрицы с максимальным элементом на главной диагонали, со строкой с заданным номером m
Задана квадратная матрица. Переставить строку с максимальным элементом на главной диагонали со строкой с заданным номером m.

C++ Поменять местами строку матрицы с максимальным элементом на главной диагонали со строкой m
#include<conio.h> #include<iostream.h> #include<iomanip.h> #include<stdlib.h> void main() { int i,j,m,n,A,t,JmaxA,ImaxA,B; ...

C++ Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с
Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером n.

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Zuzik
232 / 217 / 37
Регистрация: 11.06.2012
Сообщений: 1,426
28.06.2012, 16:14     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t #2
A - твоя матрица, n ее размер. Вот сам код который заменяет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int maxindex=0,maxElement=0;
for(int i=0;i<n;i++)
{
if(A[i][i]>maxElement)
{
maxElement=A[i][i];
maxindex=i;
}
}
for (int j=0;j<n;j++)
{
int temp=0;
temp=A[t][j];
A[t][j]=A[maxindex][j];
A[maxindex][j]=temp;
}
manynka
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 5
28.06.2012, 18:13  [ТС]     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t #3
не меняет....
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
28.06.2012, 19:03     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t #4
Можно сделать так

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
#include <iostream> 
#include <ctime> 
#include <cstdlib> 
#include <iomanip> 
using namespace std; 
int main()
{   
    setlocale(0, "rus");  // русская консоль
    const int size = 5;   // размер маорицы
    srand((unsigned) time(0));
    int matrix[size][size]; // матрица
    int i, j; 
    int max; 
    int index;
    int t;
    for( i = 0; i < size; i++)
        for ( j = 0; j < size; j++)
            matrix[i][j] = rand() % 100; // заполняем случайными числами
 
    for ( i = 0; i < size; i++)
        for ( j = 0; j < size; j++) // выводим матрицу на экран
        {
            if( j % size == 0) 
                cout << endl; 
            cout << setw(3) << matrix[i][j]; 
        }  
        cout << endl; 
        max = matrix[0][0]; 
        index = 0;
        for ( i = 1; i < size; i++)  // ищем максимальный элемент диагонали
        {
        if( max < matrix[i][i]) 
            max = matrix[i][i];  
           index = i; // индекс где расположен максимальный элемент
        }
 
        cout << "Максимальный элемент главной диагонали " << max << endl; // выводим максимальный элемент
 
        cout << "Введите t (0-4) "<< endl; 
        cin >> t; 
 
        
            for ( j = 0; j < size; j++) // меняем местами строки
            { 
                int temp = matrix[index][j]; 
                matrix[index][j] = matrix[t][j]; 
                matrix[t][j] = temp; 
            } 
 
for ( i = 0; i < size; i++)       // выводим изменённую матрицу
        for ( j = 0; j < size; j++) 
        {
            if( j % size == 0) 
                cout << endl; 
            cout << setw(3) << matrix[i][j]; 
        }  
            cout << endl;
   
            system("Pause");
}
manynka
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 5
28.06.2012, 19:37  [ТС]     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t #5
работает....спасибо огромное...
zarko97
251 / 32 / 0
Регистрация: 11.10.2015
Сообщений: 243
13.05.2017, 01:43     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t #6
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
    std::random_device rand;
    std::default_random_engine gen(rand());
    std::uniform_int_distribution <int> distr(-50, 50);
    std::size_t row;
    std::size_t size;
    while (std::cout << "Input row & size: " && std::cin >> row >> size && row <= 0 && size <= 0);
    std::vector<std::vector<int>> vector2d(size, std::vector<int>(size, 0));
    std::for_each(vector2d.begin(), vector2d.end(), [&gen, &distr](std::vector <int> & curLine) -> std::vector <int>
    {
        std::generate(curLine.begin(), curLine.end(), [&gen, &distr]() -> int { return distr(gen); });
        std::copy(curLine.begin(), curLine.end(), std::ostream_iterator <int>(std::cout << std::endl, "\t"));
        //std::for_each(curLine.begin(), curLine.end(), std::cout << std::endl << boost::lambda::_1 << "\t");
        std::cout << std::endl;
        return curLine;
    });
    std::vector<std::vector<int>>::iterator new_pos = std::max_element(vector2d.begin(), vector2d.end(), [](std::vector <int> const & vec_lhs, std::vector <int> const & vec_rhs) -> bool
    {
        int cur_pos = 0;
        return vec_lhs[cur_pos++] < vec_rhs[cur_pos++ + 1];
    });
    std::vector<std::vector<int>>::size_type beg = new_pos - vector2d.begin();
    if (beg != row)
        std::swap_ranges((vector2d.begin() + beg)->begin(), (vector2d.begin() + beg)->end(), (vector2d.begin() + row)->begin());
 
for (auto && vec : vector2d) {
    for (auto && val : vec) {
        std::cout << val << "\t";
    }
    std::cout << std::endl << std::endl;
}
Добавлено через 3 часа 30 минут
поправочка
C++
1
std::vector<std::vector<int>>::size_type beg = std::distance(vector2d.begin(), new_pos);
Captain Maxee
13.05.2017, 03:35     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t
  #7

Не по теме:

zarko97, 28.06.2012

Yandex
Объявления
13.05.2017, 03:35     Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером t
Ответ Создать тему
Опции темы

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