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

Переставить строки матрицы местами так что бы отрицательные элементы стояли на главной диагонали

22.06.2017, 16:58. Просмотров 805. Ответов 1
Метки нет (Все метки)

В квадратной матрице в каждом столбце и каждой строке есть единственный отрицательны элемент. Нужно переставить строки местами так что бы отрицательные элементы стояли на гласной диагонали.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2017, 16:58
Ответы с готовыми решениями:

Переставить строки и столбцы так, чтобы все отрицательные элементы расположились на главной диагонали матрицы
Помогите пожалуйста: Задана вещественная матрица размером n*m. Считая, что в каждой строке и...

Переставить элементы, чтобы все положительные элементы стояли в начале массива, а все отрицательные и нули - в конце
«C»: Заполнить массив случайными числами в интервале и переставить элементы так, чтобы все...

Поменять элементы на главной диагонали матрицы местами в противоположном порядке
Приветик) Хочу поменять элементы на главной диагонали местами в противоположном порядке. for (i =...

Поменять местами элементы матрицы, лежащие на главной и побочной диагонали
Написать процедуру перестановки элементов заданного массива В (4, 4), лежащих на главной и...

Переставить строки матрицы так, чтобы на главной диагонали стояли минимальные по модулю элементы
В матрице n-го порядка переставить строки так, чтобы на главной диагонали матрицы были расположены...

1
Тигруля
0 / 0 / 2
Регистрация: 22.06.2017
Сообщений: 2
22.06.2017, 17:25 2
Лучший ответ Сообщение было отмечено Limurhic как решение

Решение

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
static void Main()
{
var matrix = new int[4,4] {{1,2,-4,0}, {-8, 3,3,1}, {7,-19,9,10}, {3,2,1,-5}};
int a = matrix.GetLength(0);
for(int i = 0; i < a; i++)
{
for(int j = 0; j < a; j++)
{
if (matrix[i,j] < 0)
Obm(matrix, a, i, j);
}
}
Print(matrix, a);
}
 
public static void Obm(int[,] matrix, int a, int i, int j)
{
int c = 0;
for(int k = 0; k < a; k++)
{
c = matrix[i,k];
matrix[i,k] = matrix[j,k];
matrix[j,k] = c;
}
}
 
public static void Print(int[,] matrix, int a)
{
for(int i = 0; i < a; i++)
{
for(int j = 0; j < a; j++)
{
Console.Write(matrix[i,j] + " ");
}
Console.WriteLine();
}
}
Добавлено через 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
static int FindIndex(int[] array, int element)
{
    for (int i = 0; i < array.Length; i++)
        if (array[i] == element) return i;
    return -1;
}
 
static int FindIndexByBinarySearch(int[] array, int element)
{
    var left = 0;
    var right = array.Length - 1;
    while (left < right)
    {
        var middle = (right + left) / 2;
        if (element <= array[middle])
            right = middle;
        else left = middle + 1;
    }
    if (array[right] == element)
        return right;
    return -1;
}
 
public static void Main()
{
    var array = new[]{1,2,3,4,5,5,5,6};
    Console.WriteLine(FindIndex(array, 5));
    Console.WriteLine(FindIndexByBinarySearch(array, 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
private static readonly Random random = new Random();
 
private static void BubbleSort(int[] array)
{
    for (int i = 0; i < array.Length; i++)
        for (int j = 0; j < array.Length - 1; j++)
            if (array[j] > array[j + 1])
            {
                int t = array[j + 1];
                array[j + 1] = array[j];
                array[j] = t;
            }
}
 
public static void Main()
{
    int[] array = GenerateArray(10);
    BubbleSort(array);
    foreach (int e in array)
        Console.WriteLine(e);
}
 
private static int[] GenerateArray(int length)
{
    var array = new int[length];
    for (int i = 0; i < array.Length; i++)
        array[i] = random.Next();
    return array;
}

Сортировка слиянием:


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
static int[] temporaryArray;
 
static void Merge(int[] array, int start, int middle, int end)
{
    var leftPtr = start;
    var rightPtr = middle + 1;
    var length = end - start + 1;
    for (int i = 0; i < length; i++)
    {
        if (rightPtr > end || (leftPtr <= middle && array[leftPtr] < array[rightPtr]))
        {
            temporaryArray[i] = array[leftPtr];
            leftPtr++;
        }
        else
        {
            temporaryArray[i] = array[rightPtr];
            rightPtr++;
        }
    }
    for (int i = 0; i < length; i++)
        array[i + start] = temporaryArray[i];
}
 
static void MergeSort(int[] array, int start, int end)
{
    if (start == end) return;
    var middle = (start + end) / 2;
    MergeSort(array, start, middle);
    MergeSort(array, middle + 1, end);
    Merge(array, start, middle, end);
 
}
 
static void MergeSort(int[] array)
{
    temporaryArray = new int[array.Length];
    MergeSort(array, 0, array.Length - 1);
}
 
static Random random = new Random();
 
static int[] GenerateArray(int length)
{
    var array = new int[length];
    for (int i = 0; i < array.Length; i++)
        array[i] = random.Next();
    return array;
}
 
public static void Main()
{
    var array = GenerateArray(10);
    MergeSort(array);
    foreach (var e in array)
        Console.WriteLine(e);
}

Быстрая сортировка:


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
static void HoareSort(int[] array, int start, int end)
{
    if (end == start) return;
    var pivot = array[end];
    var storeIndex = start;
    for (int i = start; i <= end - 1; i++)
        if (array[i] <= pivot)
        {
            var t = array[i];
            array[i] = array[storeIndex];
            array[storeIndex] = t;
            storeIndex++;
        }
 
    var n = array[storeIndex];
    array[storeIndex] = array[end];
    array[end] = n;
    if (storeIndex > start) HoareSort(array, start, storeIndex - 1);
    if (storeIndex < end) HoareSort(array, storeIndex + 1, end);
}
 
static void HoareSort(int[] array)
{
    HoareSort(array, 0, array.Length - 1);
}
 
static Random random = new Random();
 
static int[] GenerateArray(int length)
{
    var array = new int[length];
    for (int i = 0; i < array.Length; i++)
        array[i] = random.Next();
    return array;
}
 
public static void Main()
{
    var array = GenerateArray(10);
    HoareSort(array);
    foreach (var e in array)
        Console.WriteLine(e);
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2017, 17:25

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

Переставить строки матрицы так, чтобы на главной диагонали были расположены элементы, наибольшие по абсолютной величине
в матрице n-го порядка переставить строки так, чтобы на главной диагонали матрицы были расположены...

В матрице n -го порядка переставить строки так, чтобы на главной диагонали матрицы были расположены элементы, наибольшие по абсолютной величине
В матрице n -го порядка переставить строки так, чтобы на главной диагонали матрицы были расположены...


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

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

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