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

Отсортировать нечетные строки матрицы - C++

Восстановить пароль Регистрация
 
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
06.12.2011, 23:25     Отсортировать нечетные строки матрицы #1
Отсортировать нечетные строки матрицы А(6х7) в порядке убывания, а четные – в порядке возрастания.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2011, 23:25     Отсортировать нечетные строки матрицы
Посмотрите здесь:

Отсортировать строки матрицы методом пузырька C++
C++ Отсортировать строки матрицы в порядке убывания
Отсортировать массив М и строки матрицы А в порядке убывания C++
Матрицы. Отсортировать четные столбцы в обратном порядке, а нечетные в прямом C++
Двумерный динамический массив. Все нечетные строки матрицы сдвинуть циклически на К элементов влево C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slava_g1
 Аватар для slava_g1
70 / 70 / 8
Регистрация: 06.02.2011
Сообщений: 127
06.12.2011, 23:49     Отсортировать нечетные строки матрицы #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
#include<iostream>
#include<ctime>
using namespace std;
const int SIZEX=6;
const int SIZEY=7;
void Sort(int * arr){
    for(int i = 0; i < SIZEY ; i++){
        for(int j = i+1; j < SIZEY; j++){
            if(arr[i]>arr[j]){
                int tmp = arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
}
void SortByDescending(int * arr){
    for(int i = 0; i < SIZEY ; i++){
        for(int j = i+1; j < SIZEY; j++){
            if(arr[i]<arr[j]){
                int tmp = arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
}
void main(){
    srand(time(0));
    int arr [SIZEX] [SIZEY];
    for(int i = 0;i < SIZEX;i++){
        for(int j = 0;j < SIZEY;j++){
            arr[i][j]=rand()%50;
        }
    }   
    for(int i = 0;i < SIZEX;i++){
        for(int j = 0;j < SIZEY;j++){
            cout<<arr[i][j]<<"\t";
        }
        cout<<endl;
    }
    cout<<"\t ************************ \t"<<endl;
    for(int i = 0;i < SIZEX;i++){
        if(i%2 == 0){
            Sort(arr[i]);
        }
        else{
            SortByDescending(arr[i]);
        }       
    }   
    for(int i = 0;i < SIZEX;i++){
        for(int j = 0;j < SIZEY;j++){
            cout<<arr[i][j]<<"\t";
        }
        cout<<endl;
    }
}
Может чего напутал , уж не серчайте )
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
07.12.2011, 01:23  [ТС]     Отсортировать нечетные строки матрицы #3
тут нечетные сортирует в порядке возрастанния, а нечетные в порядке убывания. нужно наоборот(

Добавлено через 1 час 22 минуты
(((((

Добавлено через 54 секунды
((((( не пойму что менять
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
07.12.2011, 02:37     Отсортировать нечетные строки матрицы #4
Цитата Сообщение от Devil7 Посмотреть сообщение
не пойму что менять
строку 45 на эту
C
1
if ( i % 2 )
Добавлено через 2 минуты
в строках 9 и 20 угроза споймать сигфолт, для устранения строки 7 и 19 надо переделать так
for(int i = 0; i < ( SIZEY - 1 ) ; ++i)
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
07.12.2011, 08:30     Отсортировать нечетные строки матрицы #5
мой вариант
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
#define size_i 6 // количество строк
#define size_j 7 // количество столбцов
// заполнение массива случайными целочисленными значениями
void init_array( int array[], const size_t dimm1, const size_t dimm2 );
// вывод массива на экран
void print_array( int array[], const size_t dimm1, const size_t dimm2 );
// обмен значений
void swap( int& x, int& y );
// сортировка массива
void sort_array( int array[], const size_t dimm1, const size_t dimm2 );
 
int main() {
    srand( time( NULL ) );
 
    int arr[ size_i ][ size_j ];
 
    init_array( *arr, size_i, size_j );
    cout << "Начальный массив" << endl;
    print_array( *arr, size_i, size_j );
    cout << endl;
    sort_array( *arr, size_i, size_j );
    cout << "Отсортированный массив" << endl;
    print_array( *arr, size_i, size_j );
 
    return 0;
}
 
void init_array( int array[], const size_t dimm1, const size_t dimm2 ) {
 
    for ( size_t i = 0; i < dimm1; ++i )
        for ( size_t j = 0; j < dimm2; ++j )
            array[ i * size_j + j ] = rand() % 100;
}
 
void print_array( int array[], const size_t dimm1, const size_t dimm2 ) {
 
    for ( size_t i = 0; i < dimm1; ++i ) {
        for ( size_t j = 0; j < dimm2; ++j )
            cout << array[ i * size_j + j ] << " ";
 
        cout << endl;
    }
}
 
void swap( int& x, int& y ) {
    x += y;
    y = x - y;
    x -= y;
}
 
void sort_array( int array[], const size_t dimm1, const size_t dimm2 ){
    for ( size_t i = 0; i < dimm1; ++i )
        for ( size_t j = 0; j < dimm2; ++j )
            for ( size_t k = dimm2 - 1; k > j; --k )
                if ( i % 2 ) {
                    if ( array[ i * dimm2 + k ] < array[ i * dimm2 + k - 1 ] )
                        swap( array[ i * dimm2 + k ], array[ i * dimm2 + k - 1 ] );
 
                } else if ( array[ i * dimm2 + k ] > array[ i * dimm2 + k - 1 ] )
                    swap( array[ i * dimm2 + k ], array[ i * dimm2 + k - 1 ] );
 
}
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
07.12.2011, 20:29  [ТС]     Отсортировать нечетные строки матрицы #6
ввел функции ввода и вывода массива, 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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void input(int *m, int n);
void output(int *m, int n, int k);
void Sort(int * arr);
void SortByDescending(int * arr);
 
int main(void)
{
    int arr[6][7];
    srand(time(NULL));
    printf("Array:\n");
    input(&arr[0][0], 6*7); 
    output(&arr[0][0], 6, 7);
    printf("\t***************\t");
    return 0;
 
}
 
void input(int *m, int n);
{
    int i;
    for(i=0;i<n;i++)
        *(m+i) = rand()%100/10;
}
 
void output(int *m, int n, int k);
{
    int i, j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<k;j++)
            printf("%4d", *(m+i*k+j));
        printf("\n");
    }
}
 
void Sort(int * arr);
{
        for(int i = 0; i < 6; i++)
        {
            for(int j = i+1; j <7; j++)
            {
                if(arr[i]>arr[j])
                {
                    int tmp = arr[i];
                    arr[i]=arr[j];
                    arr[j]=tmp;
                }
            }
        }
}
 
void SortByDescending(int * arr);
{
    for(int i = 0; i < 6; i++)
    {
        for(int j = i+1; j < 7; j++)
        {
            if(arr[i]<arr[j])
            {
                int tmp = arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
}
Добавлено через 59 минут
((((((((
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
07.12.2011, 21:15     Отсортировать нечетные строки матрицы #7
я же написал полностью готовый код.
Devil7
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 97
07.12.2011, 21:40  [ТС]     Отсортировать нечетные строки матрицы #8
Да, но я хочу своим глазом написать. Не получается(
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.12.2011, 22:05     Отсортировать нечетные строки матрицы
Еще ссылки по теме:

C++ Отсортировать элементы третьей строки матрицы
Перевернуть все нечетные строки матрицы C++
Помогите дописать код: Перевернуть все нечетные строки матрицы C++

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

Или воспользуйтесь поиском по форуму:
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
07.12.2011, 22:05     Отсортировать нечетные строки матрицы #9
что-то тут все си да си, внесу-ка вариант на ++

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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
 
//Отсортировать нечетные строки матрицы А(6х7) в порядке убывания, а четные – в порядке возрастания.
 
 
static const size_t ROWS = 6;
static const size_t COLS = 7;
 
////////////////////////////////////////////////////////////////////////
 
class SORTX: public unary_function<vector<int>&, void>
{
public:
    SORTX(): i() {}
 
    result_type operator()(argument_type element)
    {
        (i & 1)
            ? std::sort(element.begin(), element.end(), greater<int>())
            : std::sort(element.begin(), element.end(), less<int>());
 
        ++i;
    }
 
private:
    size_t i;
};
 
////////////////////////////////////////////////////////////////////////
 
class PRINT: public unary_function<const vector<int>&, void>
{
public:
    result_type operator()(argument_type element)
    {
        copy(element.begin(), element.end(), ostream_iterator<int>(cout, " "));
        cout << endl;
    }
private:
};
 
////////////////////////////////////////////////////////////////////////
 
int main()
{
    //fill test
    vector<vector<int>> m(ROWS);
 
    vector<int> test = {1,2,3,4,5,6,7};
 
    for (int i = 0; i < ROWS; ++i)
    {
        m[i] = test;
    }
 
    //sort
    for_each(m.begin(), m.end(), SORTX());
 
    //out
    for_each(m.begin(), m.end(), PRINT());
 
    return 0;
}
Yandex
Объявления
07.12.2011, 22:05     Отсортировать нечетные строки матрицы
Ответ Создать тему
Опции темы

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