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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Применение const в функции http://www.cyberforum.ru/cpp-beginners/thread350377.html
Подскажите как защитить массив от изменения в функции. #include <iostream> using namespace std; double igor(double mass,int n); int main() { setlocale(LC_ALL, "rus");
C++ поставить плагин на гостевой записи В универсистете стоит студия 2008, при попытке поставить плагин вываливается запрет на данное действие, а работать без VA X очень печально, можно ли как-то обойти данную проблему? http://www.cyberforum.ru/cpp-beginners/thread350375.html
C++ оформление проекта в студии, подключение библиотек
Здравствуйте, преподаватель благим матом обложил аудиторию, потом стандартные настройки студии и в течении 30 секунд меня настройки проекта так, что в итоге получил одну папку в которой лежат exe...
Named Pipes и динамическая память C++
Доброго времени суток. Поиском ничего подобного не нашел. Вообщем следующая ситуация. Имеется сервер Named Pipes Overlapped, кол-во каналов будет считываться с файла, получается, что нужно...
C++ Создать двигающийся 3D текст http://www.cyberforum.ru/cpp-beginners/thread350356.html
Народ, помогите пожалуйста. Немного разбираюсь в С\C++. Надо написать прогу, которая бы отображала двигающийся и крутящийся текст. С чего начать? Где найти информацию вообще? До этого оконные...
C++ Найти последовательность чисел Помогите решить задачу. Задана строка из последовательности чисел: 5 3 1 3 5 2 5 3 1 3 3 5 2 5 Нужно найти такую последовательность чисел, которая начинается и оканчивается на цифру 5. Эта... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
11.09.2011, 18:23
На С для разнообразия
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
 
int cmp_ascendant(const void * a, const void * b){
    return *(int*)a - *(int*)b;
}
 
int sort_matrix(int ** matrix, int rows, int columns){
    int * tmp, i;
    
    if ( ! ( tmp = malloc(sizeof(int) * rows * columns) ) ){
        perror("malloc");
        return -1;
    }
    
    for ( i = 0; i < rows; ++i )
        memcpy(tmp + columns * i, matrix[i], columns * sizeof(int));
    
    qsort(tmp, rows * columns, sizeof(int), cmp_ascendant);
    
    for ( i = 0; i < rows; ++i )
        memcpy(matrix[i], tmp + columns * i, columns * sizeof(int));
    
    free(tmp);
    
    return 0;
}
 
void random_fill_matrix(int ** matrix, int rows, int columns, int top){
    int i, j;
    
    for ( i = 0; i < rows; ++i )
        for ( j = 0; j < columns; ++j )
            matrix[i][j] = rand() % top;
}
 
void dump_matrix(int ** matrix, int rows, int columns, int width){
    int i, j;
    
    for ( i = 0; i < rows; ++i ){
        for ( j = 0; j < columns; ++j )
            printf("%*d", width, matrix[i][j]);
        printf("\n");
    }
}
 
#define TOP 100
#define WIDTH 3
 
int main(void){
    int ** matrix, rows, columns, i;
    
    printf("Rows: ");
    scanf("%d", &rows);
    printf("Columns: ");
    scanf("%d", &columns);
    
    if ( ! ( matrix = malloc(rows * sizeof(int*)) ) ){
        perror("malloc");
        exit(1);
    }
    for ( i = 0; i < rows; ++i ){
        if ( ! ( matrix[i] = malloc(columns * sizeof(int)) ) ){
            perror("malloc");
            exit(1);
        }
    }
    
    random_fill_matrix(matrix, rows, columns, TOP);
    printf("\nUnsorted:\n");
    dump_matrix(matrix, rows, columns, WIDTH);
    
    if ( sort_matrix(matrix, rows, columns) ){
        fprintf(stderr, "Memory error!\n");
        exit(1);
    }
    printf("\nSorted:\n");
    dump_matrix(matrix, rows, columns, WIDTH);
    
    for ( i = 0; i < rows; ++i )
        free(matrix[i]);
    free(matrix);
    
    exit(0);
}
Код
andrew@debnout:~/cpp/numbers$ gcc -o matrix_sort matrix_sort.c
andrew@debnout:~/cpp/numbers$ ./matrix_sort 
Rows: 4
Columns: 10

Unsorted:
 83 86 77 15 93 35 86 92 49 21
 62 27 90 59 63 26 40 26 72 36
 11 68 67 29 82 30 62 23 67 35
 29  2 22 58 69 67 93 56 11 42

Sorted:
  2 11 11 15 21 22 23 26 26 27
 29 29 30 35 35 36 40 42 49 56
 58 59 62 62 63 67 67 67 68 69
 72 77 82 83 86 86 90 92 93 93
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru