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

Работа с двухмерными массивами - C++

Восстановить пароль Регистрация
 
Sarmat
 Аватар для Sarmat
3 / 3 / 1
Регистрация: 13.11.2010
Сообщений: 57
09.11.2011, 00:31     Работа с двухмерными массивами #1
Привет всем. Помогите пожалуйста. Нужно в двухмерном массиве 10х10 переставить столбцы в порядке увеличения количества элеменов=0 в столбцах. Тоесть:
1 2 3 4
0 2 0 5
0 3 0 5
2 0 0 6

Конечный массив:
4 2 1 3
5 2 0 0
5 3 0 0
6 0 2 0

Буду очень благодарен. Зарание всем спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 00:31     Работа с двухмерными массивами
Посмотрите здесь:

C++ Работа с массивами
C++ Работа с массивами
Использование функций для работы с одномерными и двухмерными массивами C++
C++ Использование функций для работы с одномерными и двухмерными массивами
Работа с массивами. C++
C++ Задача с двухмерными массивами.
Работа с Массивами C++
Работа с массивами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
09.11.2011, 11:37     Работа с двухмерными массивами #2
Использовал алгоритм быстрой сортировки, массив 10х10 сделаете сами, заменив N на 10 и объявление arr
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 <stdlib.h>
 
void qsort_by_nzeros(int *v[], 
    int left, int right, int size);
 
#define N  4
 
int main()
{
    int arr[N][N] = {
        1, 2, 3, 4,
        0, 2, 0, 5,
        0, 3, 0, 5,
        2, 0, 0, 6
    };
    int **a, i, j;
 
    a = (int **) malloc(N * sizeof(int *));
    for (j = 0; j < N; j++) {
        a[j] = (int *) malloc(N * sizeof(int));
        for (i = 0; i < N; i++) 
            a[j][i] = arr[i][j];
    }
    qsort_by_nzeros(a, 0, N-1, N);
    printf("sorted by number of zeros in each column:\n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            printf("%2d ", a[j][i]);
        putchar('\n');
    }
    for (i = 0; i < N; i++)
        free(a[i]);
    free(a);
    return 0;
}
 
void qsort_by_nzeros(int *v[], int left, int right, int size)
{
    int i, last, count_zeros(int *, int);
    void swap(int **, int **);
 
    if (left >= right)  
        return;      
    swap(&v[left], &v[ (left + right)/2 ]);
    last = left;
    for (i = left+1; i <= right; i++)
        if (count_zeros(v[i], size) < count_zeros(v[left], size))
            swap(&v[++last], &v[i]);
    swap(&v[left], &v[last]);
    qsort_by_nzeros(v, left, last-1, size);
    qsort_by_nzeros(v, last+1, right, size);
}
 
void swap(int **a, int **b)
{
    int *tmp = *a;
    *a = *b;
    *b = tmp;
}
 
int count_zeros(int *arr, int size)
{
    int cnt = 0;
 
    for (size--; size >=0; size--)
        if (arr[size] == 0)
            cnt++;
    return cnt;
}
и двумерными
Yandex
Объявления
09.11.2011, 11:37     Работа с двухмерными массивами
Ответ Создать тему
Опции темы

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