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

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

Восстановить пароль Регистрация
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
18.05.2014, 20:31     Найти минимальный элемент в столбце и поменять его местами с первым #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
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <algorithm>
 
typedef std::vector <std::vector <int>> matrix;
 
void genMatrix(matrix &C, const int M, const int N)
{
        for (int i = 0; i < M; i++)
        {
                std::vector <int> temp;
                for (int j = 0; j < N; j++)
                {
                        temp.push_back(std::rand() % 20 + 1);
                }
               
                C.push_back(temp);
        }
}
 
void printMatrix(const matrix &C)
{
        for (int j = 0; j < C[0].size(); j++)
        {
                std::cout << std::endl;
               
                for (int i = 0; i < C.size(); i++)
                {
                        std::cout << std::setw(3) << C[i][j];
                }
        }
}
 
int main()
{
        std::srand(std::time(NULL));
       
        matrix C;
        const int M = 5;
        const int N = 6;
        genMatrix(C, M, N);
       
        std::cout << "Before operations:\n";
        printMatrix(C);
       
        for (int j = 0; j < N; j++)
        {
                for (int i = 0; i < M; i++)
                {
                        std::vector <int> temp = C[i];
                        //std::swap(C[i][0], *std::max_element(temp.begin(), temp.end()));
                        std::swap(C[i][0], *std::min_element(temp.begin(), temp.end()));
                }
        }
       
        std::cout << "\n\n\nAfter operations:\n";
        printMatrix(C);
       
        return 0;
}
Добавлено через 17 минут
up....
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 20:31     Найти минимальный элемент в столбце и поменять его местами с первым
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
karaulov6
15 / 15 / 1
Регистрация: 23.03.2013
Сообщений: 140
18.05.2014, 21:32     Найти минимальный элемент в столбце и поменять его местами с первым #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
#include <Windows.h>
#include <vector>
#include <ctime>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
typedef std::vector <std::vector <int>> MATRIX;
 
unsigned int sizex = 6;
unsigned int sizey = 10;
unsigned int maxvalue = 30;
 
void printmatrix( MATRIX &matrix )
{
    for ( unsigned int n = 0; n < sizex; n++ )
    {
        for ( unsigned int i = 0; i < sizey; i++ )
        {
            cout << matrix[ i ][ n ] << "\t";
        }
        cout << endl;
    }
}
 
void genmatrix( MATRIX &matrix )
{
    for ( unsigned int i = 0; i < sizey; i++ )
    {
        std::vector <int> tmp;
        for ( unsigned int n = 0; n < sizex; n++ )
        {
            tmp.push_back( std::rand( ) % maxvalue + 1 );
        }
        matrix.push_back( tmp );
    }
}
 
void swapmin( MATRIX &matrix )
{
    for ( unsigned int n = 0; n < sizey; n++ )
    {
        int tmp1 = MAXINT32;
        int tmp2 = matrix[n][0];
        int swapid = -1;
        for ( unsigned int i = 1; i < sizex; i++ )
        {
            if ( matrix[ n ][ i ] < tmp1 )
            {
                tmp1 = matrix[ n ][ i ];
                swapid = i;
            }
        }
 
        if ( tmp1 < MAXINT32 )
        {
            matrix[ n ][ swapid ] = tmp2;
            matrix[ n ][ 0 ] = tmp1;
        }
 
        cout << endl;
    }
}
 
 
int main( )
{
    MATRIX matrix;
 
    cout << "Enter size X:";
    cin >> sizex;
    cout << "Enter size Y:";
    cin >> sizey;
    cout << "Enter max value:";
    cin >> maxvalue;
 
 
 
    std::srand( std::time( NULL ) );
 
    //GENERATE
 
    genmatrix( matrix );
 
    // Print 
 
    printmatrix( matrix );
 
    // Swap
 
    swapmin( matrix );
    // Print 
 
    printmatrix( matrix );
 
 
    system( "pause" );
 
}
Только тут чувствую что-то не так, но главное ведь что работает?))))
Yandex
Объявления
18.05.2014, 21:32     Найти минимальный элемент в столбце и поменять его местами с первым
Ответ Создать тему
Опции темы

Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru