Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 2
1

5 алгоритмов сортировки

20.11.2016, 02:16. Просмотров 405. Ответов 3
Метки нет (Все метки)

Ребят,помогите с курсовой по программированию,пожалуйста.Нужно создать матрицу(с помощью векторов,рандомную),посчитать умножение елементов в каждом столбике ,записать в одномерный массив и отсортировать и массив и матрицу(+ вывести количество сортировок и матрицы и массива). + записать каждую сортировку в файлы исходного кода.

Работу я уже начала,но не получается отсортировать матрицу.
Ниже примеры которые я уже написала:

Заголовочные файлы :
1)Osnovnii_vectoru.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef Osnovnii_vectoru_h
#define Osnovnii_vectoru_h
#include "iostream"
#include "math.h"
#include <vector>
#include <iterator>
#include <random>
#include <ctime>
#include <locale>
#include <iomanip>
#endif 
 
using namespace std;
 
void osnovnaya_matrix(vector<vector<int>>&Matrix, int m, int n);
void operazii_s_stolbzami(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n);
void masiv_iz_dobutkiv(vector<int>&coor);
void otsortirovanaya_matrix(vector<vector<int>>&Matrix);
 
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1);
void sortirovka_vuborom(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1);

Файлы исходного кода:

1)Matrix.cpp:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    vector<vector<int>>Matrix;
    vector<int>Vect;
    vector<int>coor;
    
    int m, n;
    int kilk = 0, kilk1 = 0;
 
    cout << "Bведiть к-сть рядкiв : ";
    cin >> m;
    cout << "Bведiть к-сть стовпцiв : ";
    cin >> n;
 
    cout << "Матриця X\n";
    osnovnaya_matrix(Matrix, m, n);
    cout << endl;
 
    operazii_s_stolbzami(Matrix,coor, m, n);
    cout << "\nМасив з добуткiв: \n";
    masiv_iz_dobutkiv(coor);
    cout << endl;
    
    sortirovka_bulbashkoi(Matrix,coor, m, n, kilk, kilk1);
    //sortirovka_vuborom(Matrix, coor, m, n, kilk, kilk1);
 
 
    cout << "\nВiдсортована матриця:\n";
    otsortirovanaya_matrix(Matrix);
    cout << "\nВiдсортований масив:\n";
    masiv_iz_dobutkiv(coor);
    
    cout << endl << "\nК-сть перестановок в масивi= " << kilk;
    cout << endl << "К-сть перестановок в матрицi= " << kilk1 << endl;
    
 
    return 0;
}
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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
void osnovnaya_matrix(vector<vector<int>>&Matrix, int m, int n)
{
    default_random_engine e(time(NULL));
    uniform_int_distribution<int> u(-10, 10);
    vector<int>Vect;
    for (size_t j = 0; j != m;j++)
    {
        for (size_t i = 0; i != n; i++)
        {
            Vect.push_back(u(e));
            cout << setw(4) << Vect[i] << " ";
        }
        Matrix.push_back(Vect);
        cout << endl;
        Vect.clear();
    }
}
 
void operazii_s_stolbzami(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n)
{
    for (int j = 0; j < n; j++)
    {
        cout << "Столбец №" << j + 1;
        int dob = 1;
        for (int i = 0; i<m; i++)
        {
            dob *= Matrix[i][j];
        }
        cout << " Добуток елементiв= " << dob << endl;
        coor.push_back(dob);
    }
}
 
void masiv_iz_dobutkiv(vector<int>&coor)
{
    for (vector<int>::iterator iter = coor.begin(); iter != coor.end(); iter++)
    {
        cout << setw(4) << *iter << " ";
    }
}
 
void otsortirovanaya_matrix(vector<vector<int>>&Matrix)
{
    for (vector<vector<int>>::iterator matiter = Matrix.begin();matiter != Matrix.end();matiter++)
    {
        for (vector<int>::iterator veciter = matiter->begin();veciter != matiter->end();veciter++)
        {
            cout << setw(4) << *veciter << " ";
 
        }
        cout << endl;
    }
}
3)Бульбашка:

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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
 
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    int buff;
    int flag;
 
    do
    {
        flag = 0;
        for (int j = 0;j < m ;j++)
        {
            for (int i = 0;i < (n-1);i++)
            {
                if (coor[i] < coor[i + 1])
                {
                    buff = coor[i];
                    coor[i] = coor[i + 1];
                    coor[i + 1] = buff;
 
                    flag = 1;
                    kilk = kilk + 1;
 
                    for (int k = 0;k<m;k++)
                    {
                        buff = Matrix[k][j];
                        Matrix[k][j] = Matrix[k][i];
                        Matrix[k][i] = buff;
                        kilk1 = kilk1 + 1;
                    }
                }
            }
        }
    } while (flag != 0);
}
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
#include "stdafx.h"
#include "Osnovnii_vectoru.h"
 
void sortirovka_vuborom(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    for (int j = 0; j < m; ++j)
    {
        int buff = coor[0];
 
        for (int i = j+1; i < n-1; ++i)
        {
            if (coor[i] <coor[i+1])
            {
                buff = coor[i];
                coor[i] = coor[i+1];
                coor[i+1] = buff;
 
                kilk = kilk + 1;
                for (int k = 0;k < m;k++)
                {
                    buff = Matrix[k][i];
                    Matrix[k][i] = Matrix[k][j];
                    Matrix[k][j] = buff;
                    kilk1 = kilk1 + 1;
                }
            }
        }
    }
}

З.Ы. Буду благодарна за любую помощь!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2016, 02:16
Ответы с готовыми решениями:

Визуализация алгоритмов сортировки
Нужно создать программу для визуализации 3 алгоритмов сортировки. Подскажите, как и на чем лучше...

Иследование алгоритмов сортировки
дан одномерный массив. Сформировать новый массив, отрицательные элементы которого отсортированы по...

Иследование алгоритмов сортировки
дан одномерный массив. Сформировать новый массив, отрицательные элементы которого отсортированы по...

Реализация алгоритмов сортировки
Массив данных заполнять случайным образом. Рассмотреть массивы данных с элементов типа long и char....

3
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
20.11.2016, 11:30 2

Не по теме:

Сортировка "бульбашкой" - это нечто. :D


И как матрица должна быть отсортирована? Только строки или как единое целое?
0
0 / 0 / 0
Регистрация: 20.11.2016
Сообщений: 2
20.11.2016, 15:50  [ТС] 3
По столбцах должна быть отсортирована.
0
6913 / 5978 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
20.11.2016, 21:39 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
void sortirovka_bulbashkoi(vector<vector<int>>&Matrix, vector<int>&coor, int m, int n, int &kilk, int &kilk1)
{
    int buff;
    int flag;
 
    for (int ii = 0; ii < n; ++ii)
    for(int i = 0; i < m - 1; ++i)
    {            
        for(int j = 0; j < m - 1; ++j)
        {     
            if (Matrix[ii][j + 1] < Matrix[ii][j])
            {
                std::swap(Matrix[ii][j + 1], Matrix[ii][j]);
                ++kilk;
            }
        }
    }
 
    for(int i = 0; i < m - 1; ++i)
    {            
        for(int j = 0; j < m - 1; ++j)
        {     
            if (coor[j + 1] < coor[j]) 
            {
                std::swap(coor[j + 1], coor[j]);
                ++kilk1;
            }
        }
    }
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.11.2016, 21:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Сравнение алгоритмов сортировки
Написать программу сортировок массивов указанными в таблице методами. Исходные массивы заполняются...

Анализ алгоритмов сортировки
Доброго времени суток . На кануне меня попросили реализовать программу для анализа двух алгоритмов...

Сложность алгоритмов сортировки
Доброго времени суток! Вопросы таковы: 1. Что значит, когда во вложении требуется О(n)...

Сравнительный анализ алгоритмов сортировки
Помогите пожалуйста реализовать программу для сравнения алгоритмов сортировок. Нужно отдельно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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