Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Влад1824
-1 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 38
1

Отсортировать столбцы матрицы по убыванию элементов побочной диагонали

07.05.2013, 12:36. Просмотров 661. Ответов 4
Метки нет (Все метки)

Условие-- Сортировать колонки массива по убыванию элементов побочной диагонали.
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
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <vcl.h>
void main()
{
 const  N0=100;
 int A[N0][N0];
 int M;
 unsigned int i, j, k, N;
 
 do
 {
  clrscr();
  printf(" N = ");
  scanf("%d",&N);
 }while (N>N0||N<1);
 Randomize();
 for(i=0;i<N;i++)
 {
  for(j=0;j<N;j++)
  {
    A[i][j]=random(N0);
    printf("%d",A[i][j]);
  }
  printf("\n");
 }
 printf("\n");
 for(i=0;i<N-1;i++)
 for(j=i+1;j<N;j++)
 if (A[i][N-i+1]<A[j][N-j+1]) 
 {
  M=A[i][N-i+1];
  A[i][N-i+1]=A[j][N-j+1];
  A[j][N-j+1]=M;
 }
 for(i=0;i<N;i++)
 {
  for(j=0;j<N;j++)
   printf("%d",A[i][j]);
  printf("\n");
 }
 return;
}
Выдает вот такой результат
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 12:36
Ответы с готовыми решениями:

Сортировка побочной диагонали матрицы по убыванию
Подскажите как отсортировать в матрице 25х25 побочную диагональ по элементу по убыванию....а то...

Наибольшее из значений элементов главной диагонали матрицы больше, чем наименьшее из значении элементов побочной диагонали
Дана квадратная матрица А(4,4) Выяснить верно ли, что наибольшее из значений элементов главной...

К сумме элементов главной диагонали матрицы прибавить произведение элементов побочной диагонали
Дан массив из целых чисел А(5 х 5). К сумме элементов главной диагонали прибавить произведение...

Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали
В строчке int **matrix = malloc(sizeof(int*) * rows); выделяет функцию malloc, а в строчке matrix...

Найти сумму неотрицательных элементов матрицы выше побочной диагонали и ниже главной диагонали
Есть задание: Дана квадратная вещественная матрица размерности n. Найти сумму неотрицательных...

4
anmartex
...
1715 / 1208 / 908
Регистрация: 12.02.2013
Сообщений: 1,978
07.05.2013, 20:38 2
Влад1824, строки 25 и 41, измените формат вывода на "%d ", а лучше - "%4d"
1
Влад1824
-1 / 0 / 0
Регистрация: 16.11.2012
Сообщений: 38
09.05.2013, 20:55  [ТС] 3
Нет сдесь должно сортировать колонки массива по убыванию элементов побочной диагонали а оно выводит тот же массив что и создает. Получаеться что оно ничего с ним не делает и выводит его .
0
valeriikozlov
Эксперт С++
4690 / 2516 / 751
Регистрация: 18.08.2009
Сообщений: 4,550
09.05.2013, 23:17 4
Цитата Сообщение от Влад1824 Посмотреть сообщение
Нужно найти ошибку
Ошибки:
Цитата Сообщение от Влад1824 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
for(i=0;i<N-1;i++)// Пусть N равно 4
 for(j=i+1;j<N;j++)
 if (A[i][N-i+1]<A[j][N-j+1]) // вот здесь неправильно: например при i равной 0, получается обращение к элементу A[0][5] (это значение не определено), та же самая ошибка и для A[j][N-j+1]
 {
 M=A[i][N-i+1];// кроме вышеуказанной ошибки, здесь нужно менять не сами элементы побочной диагонали, а сами столбцы
 A[i][N-i+1]=A[j][N-j+1];
 A[j][N-j+1]=M;
 }
Кроме этого есть варианты, когда хоть как меняй столбцы, а отсортировать колонки массива по убыванию элементов побочной диагонали не получится. Например:
2 2
1 1
1
AyzekUorren
6 / 6 / 7
Регистрация: 27.09.2014
Сообщений: 46
16.06.2015, 01:06 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
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
93
94
95
96
97
98
99
100
101
102
103
104
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
 
int main(void)
{
    const int N = 4;
    int a, f[N][N], i, j, baf, h, f1[N][N], min[4];
    const int k[N][N] = { { 6, 1, 2, 6 },
    { -2, -1, 4, 6 },
    { 3, -11, 90, 8 },
    { 5, 12, -15, 1 } };
    system("cls");
    printf("1. Zapovniti yak konstantu");
    printf("\n2. Zapovniti vipadkovimy chislami");
    printf("\n3. Zapovniti vrychnu");
    printf("\nZrobit vubir:");
    scanf("%i", &a);
    switch (a)
    {
    case 1:
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                f[i][j] = k[i][j];
        break;
    case 2:
        srand(time(NULL));
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                f[i][j] = rand() % 100 - 50;
        break;
    case 3:
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
            {
                printf("f[%i][%i]:", i, j);
                scanf("%i", &f[i][j]);
            }
        break;
    default:
        printf("\nNevirniy vubir");
        getch();
        return 1;
        break;
    }
    printf("Zadana matrica\n");
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
        {
            printf(" %4i", f[i][j]);
        }
        printf("\n\n");
    }
    printf("\n");
 
    for (i = 0; i < N; i++)  /*Присвоюємо в одновимірний масив 
                             наші числа побічної діагоналі по порядку*/
    {
        min[i] = f[i][N - i - 1];
    }
    
    for (i = 0; i < N - 1; i++)    /*Сортировка нового масиву із елементами 
                                   в середені оголошення змінної min_e, можно винести в початок,
                                   але портірбно щоб їх значення присвоювалось  циклі [i]
                                   (МЕТОД ВИБІРКОВОГО СОРТУВАННЯ)*/
    {
        int min_e = i;
        for (j = i + 1; j < N; j++)
            if (min[j] > min[min_e])
            min_e = j;
 
        baf = min[i];
        min[i] = min[min_e];
        min[min_e] = baf;
    }
 
    for (i = 0; i < N; i++)   /*Порівняння побічної діагоналі масиву f із нашим відсортованим одновимірним масивом, 
                              якщо елементи співпадають присвоюємо відповідний
                              рядок масиву f рядку масиву f1 по порядку, після всіх дій отримуємо правильний масив, 
                              відсортований по елементам побічної діагоналі, відповідними їм колонками*/
    {
        for (h = 0; h < N; h++)
        if (min[i] == f[h][N - h - 1])
            for (j = 0; j < N; j++)
            {
                f1[j][i] = f[j][N - h - 1];
            }
    }
        printf("Sortyrovka kolonok za zmenshenyam pobichnoi diagonali\n");
        printf("Matrica pislya sortirovku\n\n");
        for (i = 0; i < N; i++)
        {
            for (j = 0; j < N; j++)
            {
                printf(" %4i", f1[i][j]);
            }
            printf("\n\n");
        }
        getch();
    getch();
    return 0;
}
Добавлено через 8 минут
Немного не то в комментариях, не рядок(строка), а колонка.
Но сути не меняет.
0
16.06.2015, 01:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2015, 01:06

Найти сумму элементов матрицы, расположенных выше главной диагонали и ниже побочной диагонали
Дана целочисленная квадратная матрица размера n  m (n, m вводятся). Значения элементов матрицы...

Упорядочить столбцы матрицы по убыванию суммы элементов
Дана вещественная матрица размером 5х5.Упорядочить её столбцы по убыванию суммы элементов.

Сумма элементов матрицы выше побочной диагонали
Народ, как найти сумму элементов квадратной матрицы выше побочной диагонали?


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

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

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