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

Сортировка двумерного массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывести на экран количество и адреса нулевых элементов массива http://www.cyberforum.ru/cpp-beginners/thread744866.html
2) Дан массив целых чисел размерностью N (1<N≤30). Вывести на экран количество и адреса нулевых элементов массива.
C++ Найти количество элементов этой последовательности, кратных числу 2. Дана последовательность целых чисел, за которой следует 0. Найти количество элементов этой последовательности, кратных числу K1 и не кратных числу K2. http://www.cyberforum.ru/cpp-beginners/thread744864.html
C++ проверьте пожалуйста!
не совсем уверен что правильно #include <stdio.h> #include <stdlib.h> #include <iostream> #include <windows.h> using namespace std; void main() { double i,l,k,x;
Разделить строку на части C++
Доброго времени суток. Имеется строка: char *pBuf=new char; заполняется она таким образом: int n=m_pConnectSocket.Receive(pBuf,1024); pBuf=NULL; Данные: 3 числа через пробелы, например "15 123 45".
C++ Движение прямоугольника по треугольному контуру. Как изменить цвет при смене направления? http://www.cyberforum.ru/cpp-beginners/thread744846.html
Здравствуйте. Помогите пожалуйста с лабораторной работой. Движение прямоугольника по треугольному контуру, цвет прямоугольника должен меняться при смене направления движения. Подскажите пожалуйста, как сделать эту смену цвета. //Движение прямоугольника по треугольному контуру. //Динамические объекты. #include <conio.h> #include <graphics.h> #include <iostream.h> #include <process.h>
C++ Создать абстрактный базовый класс с виртуальными методами вычисления функции y в заданной точке х создать абстрактный базовый класс function с виртуальными методами вычисления ф-ции y=f(x) в заданной точке х и вывода результата на экран. определить производные классы Ellipse Hyperbola с собственными ф-циями вычисления у в зависимости от входного параметра х. ур-ие эллипса (x*x)/(a*a)+(y*y)/(b*b)=1 ур-ие гиперболы (x*x)/(a*a)-(y*y)/(b*b)=1 подробнее

Показать сообщение отдельно
Morfeus
9 / 9 / 1
Регистрация: 22.10.2010
Сообщений: 110
25.12.2012, 17:16     Сортировка двумерного массива
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
#include <iostream>     // Библиотека для потокового ввода/вывода.
#include <fstream>      // Библиотека для работы с файлами.
#include <windows.h>    // Библиотека для работы с system().
using namespace std;    // Пространство имент std.
//===========================================================================================
int main()
{
    ifstream in_array("array.txt"); ofstream out_array("array_sort.txt");   // Файлы для работы со значениями массива.
    setlocale (LC_ALL, "Russian");          // Русская локализация консоли.    
    int **mass = NULL;                      // Двумерный массив.
    int menu, i,j,t, n,m, *temp;            // Переменные для работы с массивом.  
    in_array >>n >>m;                       // Получение размера массива n x m.
//=============================================================================================================================
    mass = (int**) malloc(n*sizeof(int *)); // Объявление двумерного массива.
    for(i=0; i<n; i++) mass[i] = (int*) malloc(m*sizeof(int));
    temp = (int*) malloc(m*sizeof(int));    
    for(i=0; i<n; i++) for(j=0; j<m; j++) in_array >> mass[i][j]; // Получение значений для формирования массива.
//===========================================================================================
    do {
        cout << endl << "\t\t=МЕНЮ=" << endl;
        cout << "+-----------------------------------------+" << endl;
        cout << "| (1) Вывод исходного двумерного массива. |" << endl;
        cout << "| (2) Сортировки массива.                 |" << endl;
        cout << "| (0) Выход из программы.                 |" << endl;
        cout << "+-----------------------------------------+" << endl;
        cout << "Введите свой вариант: "; cin >> menu; cout   << endl;
//=============================================================================================================================
        if(menu==1) system("array.txt"); // Вывод значений исходного массива (array.txt).
        if(menu==2) { // Сортировка массива в строках по возрастанию.
//=============================================================================================================================      
            out_array << "(1) Сортировка массива в строках по возрастанию:" << endl;
            for (i=0; i<n; i++) {
                out_array << endl; // Разбивка по строкам.
                for(j=0; j<m; j++) { 
                    for (t=n-1; t>j; t--) 
                        if (mass[i][t] < mass[i][t-1])  {  
                            *temp = mass[i][t];  
                            mass[i][t] = mass[i][t-1];  
                            mass[i][t-1] = *temp;  
                        }out_array << mass[i][j] << "\t"; // Выведение массива.
                }
            }out_array << endl << "-----------------------------------------------------------------------------" << endl;        
//===========================================================================================      
            out_array << "(2) Сортировка массива в строках по убыванию:" << endl;
            for (i=0; i<n; i++) {
                out_array << endl; // Разбивка по строкам.
                for(j=m-1; j>=0; j--) { 
                    for (t=n-1; t>j; t--) 
                        if (mass[i][t] < mass[i][t-1])  {  
                            *temp = mass[i][t];  
                            mass[i][t] = mass[i][t-1];  
                            mass[i][t-1] = *temp;  
                        }out_array << mass[i][j] << "\t"; // Выведение массива.
                }
            }out_array << endl << "-----------------------------------------------------------------------------" << endl;
//===========================================================================================
          /*  out_array << "(3) Сортировка массива в столбцах по возрастанию:" << endl;
         out_array << endl << "-----------------------------------------------------------------------------" << endl;  */
//===========================================================================================
            /*out_array << "(4) Сортировка массива в столбцах по убыванию:" << endl;
                       out_array << endl << "-----------------------------------------------------------------------------" << endl;*/
//===========================================================================================
            in_array.close(); out_array.close(); // Завершение работы с файлами in_array и out_array.
            system("array_sort.txt"); // Открываем файл с отсортированным массивом.
        }
    }while(menu != 0); // Условие завершения программы.
//===========================================================================================
    // Освобождение области памяти занятой под значения массива.
    for(i=0; i<n; i++) free(mass[i]);
    free(mass); free(temp);
}
делаю всю сортировку по отдельности
сначала для строк (по убыванию и возрастанию)
Теперь необходимо для столбцов.
Но никак ни приходит в голову данная сортировка для столбцов...)
помогите пожалуйста

Добавлено через 18 часов 20 минут
сортировку сделал
но когда все вместе работает не корректно
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
#include <iostream>     // Библиотека для потокового ввода/вывода.
#include <cstdlib>      // Библиотека для работы с функцией rand().
#include <windows.h>    // Библиотека для работы с system().
using namespace std;    // Пространство имент std.
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int **mass = NULL;  // Двумерный массив.
    int min_i, n=2,m=2, *temp;  // Переменные для работы с массивом.
    cout << "-----------------------------------------------------------------------------" << endl;
 
    mass = (int**) malloc(n*sizeof(int *)); // Объявление двумерного массива.
    for(int i=0; i<n; i++) mass[i] = (int*) malloc(m*sizeof(int));
    temp = (int*) malloc(m*sizeof(int));
    cout << endl << "Исходный массив, размером "<< n << " x " << m;
    for(int i=0; i<n; i++)
    {
        cout << endl; // Разбивка по строкам.
        for(int j=0; j<m; j++) 
        {
            mass[i][j]=rand() % 100 + 100;  // Получение значений для формирования массива.
            cout << mass[i][j] << "\t";     // Вывод исходного массива.
        }
    }cout << endl << "-----------------------------------------------------------------------------" << endl;
    
    cout << "(1) Сортировка массива в столбцах по возрастанию:";
    for(int j=0; j<m; j++) {
        for(int i=0; i<n-1; i++) {
            min_i=i;
            for(int k=i+1; k<n; k++)
                if (mass[k][j] > mass[min_i][j])
                    min_i=k;
            *temp = mass[i][j];
            mass[i][j] = mass[min_i][j];
            mass[min_i][j] = *temp;
        }
    }
    for(int i = 0; i < n; i++){
        cout <<endl;
        for(int j = 0; j < m; j++)
        {
            cout << mass[i][j] << "\t";
        }
    }cout << endl << "-----------------------------------------------------------------------------" << endl;
    
    cout << "(2) Сортировка массива в столбцах по убыванию:";
    for(int j=0; j<m; j++) {
        for(int i=0; i<n-1; i++) {
            min_i=i;
            for(int k=i+1; k<n; k++)
                if (mass[k][j] < mass[min_i][j])
                    min_i=k;
            *temp = mass[i][j];
            mass[i][j] = mass[min_i][j];
            mass[min_i][j] = *temp;
        }
    }
    for(int i = 0; i < n; i++){
        cout <<endl;
        for(int j = 0; j < m; j++)
        {
            cout << mass[i][j] << "\t";
        }
    }cout << endl << "-----------------------------------------------------------------------------" << endl;
    
    cout << "(3) Сортировка массива в строках по возрастанию:";
    for (int i=0; i<n; i++) {
        cout << endl; // Разбивка по строкам.
        for(int j=0; j<m; j++) {
            for (int t=n-1; t>j; t--)
                if (mass[i][t] < mass[i][t-1])  {
                    *temp = mass[i][t];
                    mass[i][t] = mass[i][t-1];
                    mass[i][t-1] = *temp;
                }cout << mass[i][j] << "\t"; // Выведение массива.
        }
    }cout << endl << "-----------------------------------------------------------------------------" << endl;
    
    cout << "(4) Сортировка массива в строках по убыванию:";
    for (int i=0; i<n; i++) {
        cout << endl; // Разбивка по строкам.
        for(int j=m-1; j>=0; j--) {
            for (int t=n-1; t>j; t--)
                if (mass[i][t] < mass[i][t-1])  {
                    *temp = mass[i][t];
                    mass[i][t] = mass[i][t-1];
                    mass[i][t-1] = *temp;
                }cout << mass[i][j] << "\t"; // Выведение массива.
        }
    }cout << endl << "-----------------------------------------------------------------------------" << endl;
 
    // Освобождение области памяти занятой под значения массива.
    for(int i=0; i<n; i++) free(mass[i]);
    free(mass); free(temp);
    system("pause");
}
помогите пожалуйста
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru