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

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

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

Сортировка матрицы по условию - C++

25.12.2013, 12:53. Просмотров 267. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста решить следующую задачу:
Дана матрица (N+15)x(N+15), если сумма четных чисел больше суммы нечетных, тогда сортировать по возрастанию, иначе по убыванию, числа генерировать случайно в интервале [-N-15; N+15].
Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2013, 12:53     Сортировка матрицы по условию
Посмотрите здесь:

Изменить вывод матрицы на консоль согласно условию C++
Подсчитать количество строк матрицы, удовлетворяющих условию C++
Переход на следующую строку матрицы и транспонировать по условию C++
Сформировать одномерный массив из элементов матрицы по условию C++
Замена элементов матрицы по условию C++
C++ Перестановка строк матрицы по условию
C++ Сортировка по условию
C++ Заполнить указанные секторы матрицы по условию
C++ Осуществить циклический сдвиг матрицы по условию
Cформировать вектор B из матрицы по условию C++
Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов) C++
C++ сортировка массива по условию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
es_
201 / 201 / 46
Регистрация: 14.01.2013
Сообщений: 455
25.12.2013, 14:00     Сортировка матрицы по условию #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
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    setlocale(LC_ALL,"Russian");
    const int N = 5;
    int matrix[N+15][N+15],sumch=0,sumnch=0;
    int i,j;
    cout<<"Случайная матрица: \n";
    for(i=0;i<N+15;i++)
    {
        for(j=0;j<N+15;j++)
        {
            matrix[i][j] = rand()%((N+15)*2+1) -N-15;
            cout<<matrix[i][j]<<" ";
            if(matrix[i][j]%2==0)
            {
                sumch+=matrix[i][j];
            }
            else
            {
                sumnch+=matrix[i][j];
            }
        }
        cout<<endl;
    }
    if(sumch>sumnch)
    {
        cout<<"Сумма чётных числе больше чем сумма нечётных, поэтому сортируем по возрастанию: \n";
        for(int k = 0; k < (N+15) * (N+15); ++k) {
            for( i = 0; i < (N+15); ++i) {
                for( j = 0; j < (N+15); ++j) {
                    if(j != (N+15) - 1) {  
                        if(matrix[i][j+1] < matrix[i][j]) {
                            int tmp = matrix[i][j+1];
                            matrix[i][j+1] = matrix[i][j];
                            matrix[i][j] = tmp;
                        }
                    }
                    else {
                        if((matrix[i+1][0] < matrix[i][j]) && (i != (N+15) - 1)) {
                            int tmp = matrix[i+1][0];
                            matrix[i+1][0] = matrix[i][j];
                            matrix[i][j] = tmp;
                        }
                    }
                }
            }
        }
    }
    else
    {
        cout<<"Сумма чётных числе небольше чем сумма нечётных, поэтому сортируем по убыванию: \n";
        for(int k = 0; k < (N+15) * (N+15); ++k) {
            for( i = 0; i < (N+15); ++i) {
                for( j = 0; j < (N+15); ++j) {
                    if(j != (N+15) - 1) {  
                        if(matrix[i][j+1] > matrix[i][j]) {
                            int tmp = matrix[i][j+1];
                            matrix[i][j+1] = matrix[i][j];
                            matrix[i][j] = tmp;
                        }
                    }
                    else {
                        if((matrix[i+1][0] > matrix[i][j]) && (i != (N+15) - 1)) {
                            int tmp = matrix[i+1][0];
                            matrix[i+1][0] = matrix[i][j];
                            matrix[i][j] = tmp;
                        }
                    }
                }
            }
        }
    }
    cout<<"Отсортированная матрица: \n";
    for(i=0;i<N+15;i++)
    {
        for(j=0;j<N+15;j++)
        {
            cout<<matrix[i][j]<<" ";
        }
        cout<<endl;
    }
    system("PAUSE > void");
    return 0;
}
Yandex
Объявления
25.12.2013, 14:00     Сортировка матрицы по условию
Ответ Создать тему
Опции темы

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