Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 08.02.2013
Сообщений: 106

Дана матрица C[N,N]. Указать, что больше-сумма строки K или сумма эл-ов главной диагонали. Разложить в порядке убывания по модулю

01.03.2013, 08:00. Показов 1640. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана матрица С[N,N]. Указать, что больше-сумма строки K или сумма эл-ов главной диагонали. Разложить в порядке убывания по модулю эл-ты побочной диагонали.

Помогите пожалуйста! Не могу решить(
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.03.2013, 08:00
Ответы с готовыми решениями:

Выяснить, что больше: сумма элементов главной диагонали матрицы или сумма элементов побочной
Выяснить, что больше: сумма элементов главной диагонали матрицы размером 4*4 или сумма элементов ее побочной диагонали. {если можно с...

Дан двумерный массив. Определить, что больше - сумма чисел главной или побочной диагонали массива.
Дан двумерный массив. Определить, что больше - сумма чисел главной или побочной диагонали массива. ЗАРАНЕЕ СПАСИБО! пускай квадратная...

Определить, что больше по модулю: сумма положительных или произведение отрицательных элементов массива
Дан двумерный массив в файле ‘array.txt’. Определить, что больше по модулю: сумма положительных или произведение отрицательных элементов...

3
32 / 32 / 12
Регистрация: 18.03.2011
Сообщений: 102
01.03.2013, 13:02
Вот только без сортировки.
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
using System;
 
class massiv
{
    static void Main()
    {
        Console.WriteLine("Введите размер массива:");
        int n = Int32.Parse(Console.ReadLine());
        int[,] massiv = new int[n,n];
        int diagonal = 0, stroka = 0, k;
        int i, j;
        Console.WriteLine("Массив");
 
        Random rand = new Random();
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
 
                massiv[i, j] = rand.Next(0, 20);
 
                Console.Write(massiv[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.WriteLine("Введите номер строки K: ");
        k = Int32.Parse(Console.ReadLine());
        for (j = 0; j < n; j++)
        {
            stroka += massiv[k-1, j];
        }
        for(i = 0, j = 0; i < n | j < n ; i++, j++)
        {
            diagonal += massiv[i, j];
        }
        
        if (stroka > diagonal) Console.WriteLine("Сумма элементов строки K больше  суммы главной диагонали");
        else if (stroka < diagonal) Console.WriteLine("Сумма элементов главной диагонали больше  суммы строки К");
        else Console.WriteLine("Сумма равна в строки К и главной диагонали");
        Console.ReadKey();
    }
}
0
0 / 0 / 1
Регистрация: 08.02.2013
Сообщений: 106
01.03.2013, 13:26  [ТС]
Цитата Сообщение от Zheka13 Посмотреть сообщение
Вот только без сортировки.
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
using System;
 
class massiv
{
    static void Main()
    {
        Console.WriteLine("Введите размер массива:");
        int n = Int32.Parse(Console.ReadLine());
        int[,] massiv = new int[n,n];
        int diagonal = 0, stroka = 0, k;
        int i, j;
        Console.WriteLine("Массив");
 
        Random rand = new Random();
        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
 
                massiv[i, j] = rand.Next(0, 20);
 
                Console.Write(massiv[i, j] + " ");
            }
            Console.WriteLine();
        }
        Console.WriteLine("Введите номер строки K: ");
        k = Int32.Parse(Console.ReadLine());
        for (j = 0; j < n; j++)
        {
            stroka += massiv[k-1, j];
        }
        for(i = 0, j = 0; i < n | j < n ; i++, j++)
        {
            diagonal += massiv[i, j];
        }
        
        if (stroka > diagonal) Console.WriteLine("Сумма элементов строки K больше  суммы главной диагонали");
        else if (stroka < diagonal) Console.WriteLine("Сумма элементов главной диагонали больше  суммы строки К");
        else Console.WriteLine("Сумма равна в строки К и главной диагонали");
        Console.ReadKey();
    }
}
Cпасибо) сортировка у меня не получается, не могу найти нигде обьяснение, как ее выполнять на двумерном массиве.
0
Заблокирован
01.03.2013, 15:12
сейчас скину, только проверить надо.

Добавлено через 1 час 8 минут
Алгоритм. хорошо-бы в другой файл
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
105
106
107
108
        /*
         * Постановка задачи: Дана матрица N x  N, требуется отсортировать по убыванию по модулю матрицу по побочной диагонали.
         * 
         * Будем считать, что побочная диагональ (D2) отсчитывается слева на прово, тогда для k-го элемента диагонали имеем d2[k] =  a[n-1-k, k] , где a[i,j] - это элмент матрицы, d2[k] - элемент диагонали,
         * k - индекс элемента диагонали (от 0 до n-1).
         * 
         * Т.е. мы можем находить элемент диагонали по одномерному индексу [0..n-1], а одномерные последовательности можно сортировать любым доступным алгоритмом сортировки.
         * В моем примере я использую быструю сортировку и компарер, который сравнивает элементы матрицы по модулю.  
 
         */
       
        //для сравнения элементов по модулю
        public class D2ComparerByAbs : IComparer<int>
        {
            #region Implementation of IComparer<in int>
 
            public int Compare(int x, int y)
            {
                return -Math.Abs(x).CompareTo(Math.Abs(y)); //- для того, чтобы сортировка была по убыванию 
            }
            #endregion
        }
 
        //Класс побочной диагонали, с реализованным идексатором.
        public class EnumD2<T>
        {
            public T[,] Matrix { get { return _matrix; } } //матрица
            private readonly T[,] _matrix;
            private readonly int _len; //длина диагонали, это так для удобства.
 
            public EnumD2(T[,] source)
            {
                _matrix = source;
                _len = source.GetUpperBound(1) + 1;
            }
 
            //Индексатор, для того чтобы пройтись по диагонали матрицы, как по обычному одномерному массиву.
            public T this[int idx]
            {
                get
                {
                    int i = _len - 1 - idx; //вычисляем номер строки, а номер столбца у нас всегда равен idx.
                    return _matrix[i, idx]; //возвращаем элемент матрицы
                }
                set
                {
                    int i = _len - 1 - idx; //вычисляем номер строки, а номер столбца у нас всегда равен idx.
                    _matrix[i, idx] = value; //присваеваем элементу матрицы, принадлежащему диагонали значение value
                }
            }
 
            //Это должно быть понятно.
            public void SortByD2(IComparer<T> comparer)
            {
                QSort(this, 0, _len - 1, comparer);
            }
 
            private static void Swap(EnumD2<T> keys, IComparer<T> comparer, int a, int b)
            {
                if ((a != b) && (comparer.Compare(keys[a], keys[b]) > 0))
                {
                    T local = keys[a];
                    keys[a] = keys[b];
                    keys[b] = local;
                }
            }
 
            //Реализация быстрой сортировки.
            private static void QSort(EnumD2<T> keys, int left, int right, IComparer<T> comparer)
            {
                do
                {
                    int a = left;
                    int b = right;
                    int idx = a + ((b - a) >> 1); 
                    Swap(keys, comparer, a, idx);
                    Swap(keys, comparer, a, b);
                    Swap(keys, comparer, idx, b);
                    T y = keys[idx];
                    do
                    {
                        while (comparer.Compare(keys[a], y) < 0) a++;
                        while (comparer.Compare(y, keys[b]) < 0) b--;
                        if (a > b) break;
                        if (a < b)
                        {
                            T local2 = keys[a];
                            keys[a] = keys[b];
                            keys[b] = local2;
                        }
                        a++;
                        b--;
                    }
                    while (a <= b);
                    if ((b - left) <= (right - a))
                    {
                        if (left < b) QSort(keys, left, b, comparer);
                        left = a;
                    }
                    else
                    {
                        if (a < right) QSort(keys, a, right, comparer);
                        right = b;
                    }
                }
                while (left < right);
            }
        }
Program

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
       private static void Main(string[] args)
        {
            var m = GenerateMatrix(4);
            PrintMatrix(m);
            Console.WriteLine();
            SortMatrixByD2(m);
            PrintMatrix(m);
            Console.ReadLine();
        }
 
        //Генерим случайную матрицу
        private static int[,] GenerateMatrix(int n)
        {
            var r = new Random((int)DateTime.Now.Ticks & 0x0000FFFF);
            var m = new int[n, n];
            for (int i = 0; i < n; ++i)
                for (int j = 0; j < n; ++j)
                    m[i, j] = r.Next(-3, 3);
            return m;
        }
 
        //Выводим матрицу.
        private static void PrintMatrix(int[,] matrix)
        {
            var c = 0;
            var len = matrix.GetUpperBound(1) + 1;
            foreach (int m in matrix)
            {
                Console.Write(m + " ");
                if ((++c) % len == 0)
                    Console.WriteLine();
            }
        }
 
        //Сортируем.
        private static void SortMatrixByD2(int[,] matrix)
        {
            var d2 = new EnumD2<int>(matrix);
            d2.SortByD2(new D2ComparerByAbs());
        }
Добавлено через 7 минут
Rommqa772, сумму строки и диагонали можно и нужно в одном цикле искать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2013, 15:12
Помогаю со студенческими работами здесь

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

В заданной квадратной матрице n*n определить, что больше: сумма элементов, лежащих выше или ниже главной линии
1. В заданной вещественной квадратной матрице n*n определить, что больше: сумма элементов, лежащих выше или ниже главной линии.

Дана матрица,если на главной диагонали больше половины элементов отрицательны
Добрый вечер,ребята помогите решить задачку,не втупляю как что писать( Дана матрица. Если на главной диагонали больше половины...

Определить, что больше - сумма четных элементов или сумма нечетных элементов введенной последовательности
Составить программу, используя оператор while, в соответствии с заданием: Ввести с клавиатуры действительные числа (положительные и...

Подпрограмма: определить матрицу, у которой сумма элементов на главной диагонали больше
вводятся две вещественные квадратные матрицы размером М*М и N*N .для той матрицы у которой сумма элементов,лежащих на главной диагонали...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru