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

Дана квадратная матрица порядка M. Обнулить элементы

21.11.2021, 16:14. Показов 6044. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет форумчане , первый раз у вас тут. Учусь на первом курсе , сначала вроде бы всё понимал , а потом как снежный ком начались накапливаться недочёты , непонятки и с каждой темой всё сложнее и сложнее , а препод не может объяснить что и как , поэтому обращаюсь к вам. Вот сама задачка : Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие
одновременно ниже главной диагонали (включая эту диагональ) и ниже побочной диагонали (также включая эту диагональ). Условный оператор не использовать.
Прошу вас расписать всё на Языке С#, чтобы было всё понятно , лучше с комментариями. Не надо решения в пару строк. Заранее благодарю !
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2021, 16:14
Ответы с готовыми решениями:

Дана целочисленная квадратная матрица порядка N. Найти номера столбцов все элементы четны
не могу ни как найти условия что б проверить все элементы на четность и потом вывести их. using System; ...

Дана целочисленная квадратная матрица порядка n. Найти номера строк, все элементы которых различны
Дана целочисленная квадратная матрица порядка n. Найти номера строк, все элементы которых различны.

Дана квадратная матрица порядка M
Дана квадратная матрица порядка M. Обнулить элементы матрицы, лежащие на главной диагонали и выше нее. Условный оператор не использовать. C#

15
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
21.11.2021, 17:43
Arsyysha,
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
            int[,] arr = {  { 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 } };
 
            for ( int i = 0; i < arr.GetLength( 0 ); i++ )
            {
                for ( int j = 0; j < arr.GetLength( 1 ); j++ )
                    Console.Write( $"{arr[ i, j ]}\t" );
                Console.WriteLine();
            }
            Console.WriteLine();
 
            for ( int i = 0; i < arr.GetLength( 0 ); i++ )
            {
                for ( int j = 0; j <= i; j++ )
                {
                    arr[ i, j ] = 0;
                    arr[ i, arr.GetLength( 1 ) - 1 - j ] = 0;
                }
            }
 
            for ( int i = 0; i < arr.GetLength( 0 ); i++ )
            {
                for ( int j = 0; j < arr.GetLength( 1 ); j++ )
                    Console.Write( $"{arr[ i, j ]}\t" );
                Console.WriteLine();
            }
Code
1
2
3
4
5
6
7
8
9
10
11
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
 
0       2       3       4       0
0       0       8       0       0
0       0       0       0       0
0       0       0       0       0
0       0       0       0       0
0
0 / 0 / 0
Регистрация: 21.11.2021
Сообщений: 21
21.11.2021, 19:33  [ТС]
Cпасибо , слушай , можешь пожалуйста объяснить , что значит $"{arr[ i, j ]}\t" в Console.Write ?
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 20:01
Лучший ответ Сообщение было отмечено Arsyysha как решение

Решение

Цитата Сообщение от Arsyysha Посмотреть сообщение
Обнулить элементы матрицы, лежащие
одновременно ниже главной диагонали (включая эту диагональ) и ниже побочной диагонали (также включая эту диагональ). Условный оператор не использовать.
Я решил задачу немножко по другому. Так как в прошлых скринах не увидел "Х образного выреза матрицы".
Честно говорю, к решению дошел не головой а путем экспериментов. Условный оператор не применяется , так как он реализован в условии цикла. (я сначала написал с условным оператором, а потом просто загнал его в условие цикла)

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
namespace Массивы1
{ 
    class Program
    {
 
 
        static void PrintArray(String s, int[,] arr) //функция для вывода массива на экран
        {
            //int  m = arr.Length;
            int  m = arr.GetLength(0);
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    s += $"{arr[i, j]} \t";
                }
                s += "\n\r";
            }
            s += "\n";
            Console.Write(s);
            Console.ReadKey();
        }
 
 
        static void Main(string[] args)
        {
 
            int m = 7; //переменная для хранения размера матрицы
 
            int[,] array = new int[m, m];// обьявили матрицу размера m на m
            
            Random random = new Random();// обьявили переменную для генерации случайных чисел
            for (int i = 0; i < m; i++)
            {
                for (int j = 0; j < m; j++)
                {           
                    array[i, j] = random.Next(0, 100);//заполняем массив псевдослучайными числами
                }
            }
 
            // Вывод на экран исходной матрицы
            String mystring = "Исходная сгенерированная матрица\n";
            PrintArray(mystring, array);
 
            // Обнуляем требуемые элементы, нужно элементы так перебрать чтобы оказаться ниже основной и побочной диаганоли
            for (int i=0;i<m;i++)//перебираем ряд 
            { for (int j=i;j>= (m - i - 1); j--)//перебираем столбец но только нижние элементы
                                                //проверка условия !!! внутри цикла что элементы 
                                                //ниже главной и побочной диагонали
                                                //обнуляем только эти элементы
                {
                    array[i, j] = 0;//проверка условия что элементы 
                    //ниже главной и побочной диагонали
                    //обнуляем только эти элементы
                }
            }
            mystring = "Mатрица после преобразования\n";
            PrintArray(mystring, array);
 
 
        }
    }
}
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 20:06
Прилагаю скриншот.
Миниатюры
Дана квадратная матрица порядка M. Обнулить элементы  
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 20:10
Цитата Сообщение от Arsyysha Посмотреть сообщение
что значит $"{arr[ i, j ]}\t" в Console.Write
Это просто форматированный вывод строк.
знаки $ и @ творят чудеса при выводе строк. Например, если стоит знак $ перед строкой, то в этой строке можно в фигурных скобках вставлять переменные и они выведутся на экран уже преобразованными в строку без всяких дополнительных мучений с Convert.ToString() или arr[i,j].ToString()
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
21.11.2021, 20:13
Цитата Сообщение от NeLirik Посмотреть сообщение
Так как в прошлых скринах не увидел "Х образного выреза матрицы".
Задание внимательнее читать надо. Написано же обнулить все элементы ниже диагоналей, включая сами диагонали.
Теперь еще раз посмотрите на "прошлые скрины".

Добавлено через 2 минуты
Цитата Сообщение от NeLirik Посмотреть сообщение
Это просто форматированный вывод строк.
Да.
Цитата Сообщение от NeLirik Посмотреть сообщение
без всяких дополнительных мучений с Convert.ToString() или arr[i,j].ToString()
Консоль выведет все что скормишь ей. Ей не нужны .ToString()-и.
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 20:28
Цитата Сообщение от wizard41 Посмотреть сообщение
Написано же обнулить все элементы ниже диагоналей, включая сами диагонали.
Написано как раз немножко по другому.
Цитата Сообщение от Arsyysha Посмотреть сообщение
одновременно ниже главной диагонали (включая эту диагональ) и ниже побочной диагонали (также включая эту диагональ).
"Одновременно" я пониманию как "логическое и".
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
21.11.2021, 20:36
Цитата Сообщение от NeLirik Посмотреть сообщение
"Одновременно" я пониманию как "логическое и".
Чегой?

Добавлено через 3 минуты
NeLirik, в матрицах принято считать выражение "ниже диагонали" - это все что находится под ней, на каждой строке. В вашем примере вырезан только нижний сектор, причем не затронув самих диагоналей.
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 21:00
Цитата Сообщение от wizard41 Посмотреть сообщение
В вашем примере вырезан только нижний сектор, причем не затронув самих диагоналей.
Может я еще чего то не понимаю. Но и рисунок, который я приложил и в коде программы явно видно, что обнуляются элементы главной последовательности матрицы и элементы побочной диагонали. Просто объясните, пожалуйста, как понимать одновременное нахождение элементов ниже главной последовательности и ниже побочной последовательности матрицы.

Добавлено через 6 минут
Я согласен с Вашим решением, если необходимо обнулить все элементы главной и побочной последовательности, а также все элементы, которые находятся ниже их.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
21.11.2021, 21:07
NeLirik,
Цитата Сообщение от wizard41 Посмотреть сообщение
причем не затронув самих диагоналей.
Это я тоже невнимательно посмотрел, да, диагонали "снизу" вы обнулили.
Но!
Согласно условию, нужно обнулить и сами диагонали и все что под ними.
Цитата Сообщение от NeLirik Посмотреть сообщение
я пониманию как "логическое и"
Вы думаете что в тексте задания есть какой-то тайный смысл? Нет никаких логических "И".
Цитата Сообщение от NeLirik Посмотреть сообщение
одновременное нахождение элементов ниже главной последовательности и ниже побочной последовательности матрицы.
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Выделенное синим должно остаться как есть. Красное - все нули.
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 21:29
Цитата Сообщение от wizard41 Посмотреть сообщение
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
5 4 3 2 1
1 2 3 4 5
Выделенное синим должно остаться как есть. Красное - все нули.
Да, слово "одновременно" придает некое непонимание с первого раза, но преподаватели его не зря включили в условие задачи.
В общем я обнулял только те элементы, которые удовлетворяют одновременно условию, что находятся ниже диагоналей или являются элементами диагонали.
0
29 / 17 / 13
Регистрация: 16.11.2021
Сообщений: 81
21.11.2021, 21:31
Вот нашел рисунок для условия нахождения ниже побочной диагонали
Миниатюры
Дана квадратная матрица порядка M. Обнулить элементы  
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
21.11.2021, 22:06
Цитата Сообщение от NeLirik Посмотреть сообщение
Да, слово "одновременно" придает некое непонимание с первого раза
Ну, все может быть. Пусть автор уточняет.

Добавлено через 4 минуты
Цитата Сообщение от NeLirik Посмотреть сообщение
Вот нашел рисунок
Для кого вы его нашли? Для меня?

Добавлено через 19 секунд
Ну спасибо, а то я не знал...

Добавлено через 26 минут
NeLirik, ну даже если так, то вот мой метод против вашего такой:
C#
1
2
3
            for ( int i = arr.GetLength( 0 ) - 1, n = 0; i >= arr.GetLength( 0 ) / 2; i--, n++ )
                for ( int j = n; j <= arr.GetLength( 1 ) - 1 - n; j++ )
                    arr[ i, j ] = 0;
Тест:
Code
1
2
3
4
5
6
7
8
9
10
11
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
 
1       2       3       4       5
6       7       8       9       10
11      12      0       14      15
16      0       0       0       20
0       0       0       0       0
0
0 / 0 / 0
Регистрация: 21.11.2021
Сообщений: 21
21.11.2021, 23:25  [ТС]
Цитата Сообщение от wizard41 Посмотреть сообщение
Пусть автор уточняет.
Автору препод дал задачку и говорит сиди дальше сам думай
Спасибо большое вам за ответ и за дискусс , было интересно почитать

Добавлено через 3 минуты
И еще вопрос , что значит в коде s+= "\n\r" ; s+= "\n" . Я понимаю ,что это можно переделать как в s = s+ "\n\r" , меня интересует , что значат \n и \r ?
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3429 / 2748 / 575
Регистрация: 04.09.2018
Сообщений: 8,624
Записей в блоге: 3
22.11.2021, 08:16
Цитата Сообщение от Arsyysha Посмотреть сообщение
И еще вопрос , что значит в коде s+= "\n\r" ; s+= "\n"
\n - это перевод строки, а \r перевод каретки в начало строки.
В консоли \r вообще не нужен, это пережиток dos. Достаточно одного \n.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2021, 08:16
Помогаю со студенческими работами здесь

Дана квадратная матрица A порядка M
Дана квадратная матрица A порядка M. Зеркально отразить ее элементы относительно побочной диагонали. (при этом элементы побочной диагонали...

Дана действительная квадратная матрица порядка n
Дана действительная квадратная матрица порядка n. Получить X1 *Хn+Х2*Х(n-1)+...+Хn*Х1, где Хк. наибольшее значение элементов k-ой...

Дана действительная квадратная матрица порядка N
Дана действительная квадратная матрица порядка N. Получить целочисленную квадратную матрицу того же порядка, в которой элемент равен...

Дана квадратная матрица A порядка n. Получить матрицу АВ
Элементы матрицы В вычисляются по формуле: bij = 1/(i+j-1) Написал код на Си Как его переделать под C# #include...

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru