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

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

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

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

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

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

Сортировка по условию - C++
Здравствуйте уважаемые программисты!Не могу сообразить как мне отсортировать массив по условию например по номеру человека или по имени или...

сортировка массива по условию - C++
Нужна помощь с сортировкой массива: 1. Задать массив int mat = { 10, 10, 11, 5, 10, 9, 9, 11, 1, 9, 8, 9, 10, 2, 8, 4,...

Сортировка цифр в строке по заданному условию - C++
Программа сортирует введенные цифры(вводить можно только цифры 012) в таком порядке 021, т.е. если вводим 102, после сортировки выводится...

Преобразовать заданные строки, согласно условию (сортировка и сравнение строк, вставка/удаление символов) - C++
Даны строки A и B. Если все символы A входят в B и в B есть повторяющиеся символы, то упорядочить символы B в порядке, обратном к...

Перестановка строк матрицы по условию - C++
Даны две целочисленные матрицы размерностью . найти разницу матриц . Определить номер первого из столбцов , содержащих хотя бы один...

Cформировать вектор B из матрицы по условию - C++
Дана матрица А размерностью N*N.Cформировать вектор B(N) компонентами которого являются суммы отрицательных элементов столбцов матрицы А.

1
es_
203 / 203 / 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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2013, 14:00
Привет! Вот еще темы с ответами:

Замена элементов матрицы по условию - C++
Дана действительная квадратная матрица порядка 7. Если i-ой строке матрицы элемент , принадлежащей главной диагонали, отрицателен, то...

Осуществить циклический сдвиг матрицы по условию - C++
Необходимо осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз. Я абсолютный новичок в C++. В...

Заполнить указанные секторы матрицы по условию - C++
Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей, от левого верхнего угла вниз - вправо. Остаток...

Реализовать функцию преобразования матрицы согласно условию - C++
Выполнить задания лабораторной работы №3 в виде функций с входными параметрами, таким образом, чтобы номер выполняемого задания задавался с...


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

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

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