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

Получить квадратную матрицу порядка n по схеме

30.10.2014, 18:17. Показов 2489. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано последовательность чисел b1,...bn. . Получить квадратную матрицу порядка n, элементами которой являются числа b1,...,bn^n. , расположены по схемеНазвание: Безымянный.jpg
Просмотров: 128

Размер: 13.9 Кб
Прошу помочь разобраться, пожалуйста
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2014, 18:17
Ответы с готовыми решениями:

Получить квадратную матрицу порядка 8 по схеме:
Дан одномерный массив действительных чисел a1, ..., a64. Получить квадратную матрицу порядка 8, элементами которой являются числа a1, ...,...

Получить квадратную матрицу порядка 9, элементами которой являются числа расположенные по схеме
Дан одномерный массив действительных чисел a1, ..., a81. Получить квадратную матрицу порядка 9, элементами которой являются числа a1, ...,...

Получить квадратную матрицу порядка n
помоги сформировать квадратную матрицу порядка n (n – вводится с клавиатуры пользователем) по следующему образцу: Пытался сделать,...

8
0 / 0 / 0
Регистрация: 30.10.2014
Сообщений: 9
30.10.2014, 23:58  [ТС]
погуглил, увидел как заполнять по спирали, здесь как то иначе нужно делать вроде...
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
31.10.2014, 02:34
Лучший ответ Сообщение было отмечено alexey888 как решение

Решение

Не понял про последовательность чисел. Вот заполнение матрицы числами по порядку, начиная с заданного. Можешь переделать под свои потребности, добавив функцию, которая вычисляет добавляемое значение
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
namespace DiagonalSnakeArray {
    class Program {
        static void Main(string[] args) {
            double[,] ar = new double[6, 6];
            FillArray(ar, 1);
            Console.WriteLine(ArrToString<double>(ar));
            Console.Read();
        }
 
        /// <summary>
        /// Метод для заполнения указанного массива змейкой по диагонали снизу вверх, справа налево.
        /// </summary>
        /// <param name="ar">Массив для заполнения</param>
        /// <param name="value">Стартовое значение</param>
        static void FillArray(double[,] ar, double value) {
            int iMax = ar.GetLength(0) - 1, jMax = ar.GetLength(1) - 1;//Максимальные значения индексов
            int count = 0;//Количество шагов по диагонали
            int dir = 1;//Направление обхода
            int i = ar.GetLength(0) - 1, j = ar.GetLength(1) - 1;//Начальные значения индексов
            ar[i, j] = value++;//Первое значение
            do {
                if (i == iMax || i == 0) {//Граничные условия. Первый и последний столбец
                    j--;
                }
                else if (j == jMax || j == 0) {//Граничные условия. Первая и последняя строка
                    i--;
                }
                ar[i, j] = value++;
                if (i == 0 && j == 0) break;
                count = Math.Abs(i - j);
                while (count-- != 0) {
                    i -= dir; j += dir;
                    ar[i, j] = value++;
                }
                dir *= -1;
            } while (true);
        }
 
        private static string ArrToString<T>(T[,] ar) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < ar.GetLength(0); i++) {
                for (int j = 0; j < ar.GetLength(1); j++) {
                    sb.AppendFormat("{0,-4}", ar[j, i].ToString());
                }
                sb.AppendLine();
            }
            return sb.ToString();
        }
    }
}
2
0 / 0 / 0
Регистрация: 30.10.2014
Сообщений: 9
31.10.2014, 17:25  [ТС]
ViterAlex, спасибо, не совсем получается сделать так что бы каждый следующий элемент был в степени порядкового номера, то есть 1^1, 2^2, 3^3 и так далее, как это реализовать?
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
31.10.2014, 17:46
Лучший ответ Сообщение было отмечено alexey888 как решение

Решение

Вот эти строчки
C#
1
ar[i, j] = value++;
нужно заменить на такое
C#
1
ar[i, j] = (int)Math.Pow(value, value++);
1
0 / 0 / 0
Регистрация: 30.10.2014
Сообщений: 9
31.10.2014, 20:14  [ТС]
ViterAlex, а как сделать что бы принимало непарную размерность матрицы? по типу 5х5 или 3х3, а то выдает ошибку выхода индекса за грани
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
31.10.2014, 20:35
Лучший ответ Сообщение было отмечено alexey888 как решение

Решение

гм, вроде бы работало. Сейчас глянем

Добавлено через 17 минут
Ага, неправильно обрабатывались углы в нечётном случае. Нужно немного дополнить граничные условия:
C#
1
2
3
4
5
6
if ((i == iMax || i == 0) && j!=0) {//Граничные условия. Первый и последний столбец
    j--;
}
else if ((j == jMax || j == 0) && i!=0) {//Граничные условия. Первая и последняя строка
    i--;
}
1
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
11.04.2017, 16:10
Добрый день! Я над похожей задачей бьюсь, но заполнение элементов по приклепленной схеме нужно сделать, начиная с левого верхнего угла.
Я сам коррективы начал вносить, но до ума довести не получается. В частности, не могу понять, как изменить стоки 43-49 под мою задачу, буду очень признателен, если подскажите что да как сделать. Вот код с моими коррективами:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace _2_root
{
    class Program
    {
        static void Main(string[] args)
        {
            double[,] ar = new double[5, 5];
            FillArray(ar, 0);
            Console.WriteLine(ArrToString<double>(ar));
            Console.Read();
        }
 
        /// <summary>
        * * * * /// Метод для заполнения указанного массива змейкой по диагонали снизу вверх, справа налево.
        * * * * /// </summary>
        * * * * /// <param name="ar">Массив для заполнения</param>
        * * * * /// <param name="value">Стартовое значение</param>
        static void FillArray(double[,] ar, double value)
        {
            int iMax = ar.GetLength(0) - 1, jMax = ar.GetLength(1) - 1;//Максимальные значения индексов
* * * * * * int count = 0;//Количество шагов по диагонали
* * * * * * int dir = 1;//Направление обхода
* * * * * * int i = 0, j = 0;//Начальные значения индексов
* * * * * * ar[i, j] = value++;//Первое значение
* * * * * * do
            {
                if ((i == iMax || i == 0) && j != ar.GetLength(1) - 1)
                {//Граничные условия. Первый и последний столбец
                    j++;
                }
                else if ((j == jMax || j == 0) && i != ar.GetLength(0) - 1)
                {//Граничные условия. Первая и последняя строка
                    i++;
                }
                ar[i, j] = value++;
                if (i == ar.GetLength(0) - 1 && j == ar.GetLength(1) -1) break;
                count = Math.Abs(i - j);
                while (count-- != 0)
                {
                    i -= dir; j += dir;
                    ar[i, j] = value++;
                }
                dir *= -1;
            } while (true);
        }
 
        private static string ArrToString<T>(T[,] ar)
        {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < ar.GetLength(0); i++)
            {
                for (int j = 0; j < ar.GetLength(1); j++)
                {
                    sb.AppendFormat("{0,-4}", ar[j, i].ToString());
                }
                sb.AppendLine();
            }
            return sb.ToString();
        }
    }
}
Изображения
 
0
0 / 0 / 0
Регистрация: 14.10.2018
Сообщений: 23
29.12.2018, 22:50
А подскажите, как сделать подобное задание, но начиная с верхнего правого угла в нижний левый?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.12.2018, 22:50
Помогаю со студенческими работами здесь

Получить квадратную матрицу порядка n
Получить квадратную матрицу порядка n: _ _ |n----------0| |--n-1-------| |-------...---| |-----------1| это...

Получить квадратную матрицу порядка n
Вечер добрый. помогите с решением 1)Получить квадратную матрицу порядка n: n n-1 n 0 n-2 n-1 n . . ...

Дан линейный массив x1, x2, . xn-1. Получить действительную квадратную матрицу порядка n
Дан линейный массив x1, x2, ... xn-1. Получить действительную квадратную матрицу порядка n.

Получить квадратную матрицу порядка 9 из одномерного массива действительных чисел
Уважаемые форумчане, если сможете, помогите пожалуйста. Срочно нужно написать эту программу в консоли на c#. 2. Дан одномерный массив...

Получить квадратную матрицу порядка N — 1 путем отбрасывания в исходной матрице строки и столбца
В данной действительной квадратной матрице порядка N найти наибольший по модулю элемент. Получить квадратную матрицу порядка N — 1 путем...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru