Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
YuraChudnick
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 3
#1

Как отсортировать матрицу по периметру - C#

27.10.2014, 21:48. Просмотров 513. Ответов 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
namespace zahist
{
    class Program
    {
        static void Main()
        {
            Random rand = new Random();
            string x;
            Console.Write("Введите размер матрицы:");
            x = Console.ReadLine();
            int N = Convert.ToInt32(x);
            int[,] array = new int[N, N];
            Console.Write("Матрица\n");
            for (int i = 0; i < N; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < N; j++)
                {
                    array[i, j] = rand.Next(-100, 100);
                    Console.Write("{0}\t", array[i, j]);
                }
            }
            Console.ReadKey();
        }
    }
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2014, 21:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как отсортировать матрицу по периметру (C#):

Отсортировать элементы по периметру матрицы по возрастанию - переписать код на C# - C#
есть задача на паскаль, помогите переделать на C# её пожалуйста: Отсортировать элементы по периметру матрицы по возрастанию....

.NET 4.x Отсортировать матрицу - C#
Дана целочисленная прямоугольная матрица: Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных...

Вывести матрицу в консоль, отсортировать по возрастанию побочную диагональ. - C#
Дано матрицу размера M×M, которая заполнена целыми числами в промежутке (-10, 10). необходимо: Вывести матрицу в консоль, отсортировать по...

Сумма по периметру - C#
Привет всем! У меня вопрос: как можно посчитать сумму элементов по периметру матрицы? Подскажите пожалуйста. Спасибо.

Программно накидать по периметру формы контрол PictureBox - C#
Привет! Программно создать в центре формы контрол PictureBox и заполнить форму по периметру, контролом PictureBox связать...

Отсортировать элементы по периметру матрицы по возрастанию - Turbo Pascal
Отсортировать элементы по периметру матрицы по возрастанию. Направление: слева направо, сверху вниз. Пример 1 6 3 после сортировки: ...

4
SmashDream
39 / 31 / 11
Регистрация: 09.06.2012
Сообщений: 144
28.10.2014, 12:06 #2
YuraChudnick, а что такое периметр матрицы ?
0
AdamFreeman
23 / 23 / 9
Регистрация: 06.06.2014
Сообщений: 64
28.10.2014, 13:27 #3
YuraChudnick, как-то так

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
            Random rand = new Random();
            string x;
            Console.Write("Введите размер матрицы:");
            x = Console.ReadLine();
            int N = Convert.ToInt32(x);
            int[,] matrix = new int[N, N];
            int[] array = new int[(int)Math.Pow(N - 1, 2)];
            Console.Write("Матрица\n");
            int top = 0;
            for (int i = 0; i < N; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < N; j++)
                {
                    matrix[i, j] = rand.Next(-100, 100);
                    Console.Write("{0}\t", matrix[i, j]);
                    if (i == 0)
                    {
                        array[top] = matrix[i, j];
                        top++;
                    }
                    else if ((i > 0 || i < N -1) && (j == 0 || j == N - 1))
                    {
                        array[top] = matrix[i, j];
                        top++;
                    }
                    else if (i == N - 1)
                    {
                        array[top] = matrix[i, j];
                        top++;
                    }
                }
            }
 
 
            for (int i = 1; i < array.Length; i++)
            {
                int j = i;
                while (j > 0 && array[j - 1] > array[j])
                {
                    int temp = array[j];
                    array[j] = array[j - 1];
                    array[j - 1] = temp;
                    j--;
                }
            }
 
            top = 0;
            int down = array.Length - 1;
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < N; j++)
                {
                    if (i == 0)
                    {
                        matrix[i, j] = array[top];
                        top++;
                    }
                    else if (j == 0)
                    {
                        matrix[i, j] = array[down];
                        down--;
                    }
                    else if (j == N - 1)
                    {
                        matrix[i, j] = array[top];
                        top++;
                    }
                    else if (i == N - 1)
                    {
                        matrix[i, j] = array[down];
                        down--;
                    }
                }
            }
 
            Console.WriteLine();
 
            for (int i = 0; i < N; i++)
            {
                Console.Write("\n");
                for (int j = 0; j < N; j++)
                {
                    Console.Write("{0}\t", matrix[i, j]);
                }
            }
            Console.ReadKey();
1
Taliesin
38 / 34 / 5
Регистрация: 18.09.2013
Сообщений: 115
28.10.2014, 13:28 #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
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
class Program
    {
        static void Main()
        {
           
            string x;
            Console.Write("Введите размер матрицы:");
            x = Console.ReadLine();
            int N = Convert.ToInt32(x);
            int[,] array = ArrayService.CreateRandomArray(N);
            
            Console.WriteLine("Матрица\n");            
            ArrayService.WriteArray(array);
            
            Console.WriteLine("\nНовая отсортированная матрица: \n");
            ArrayService.SortPerimetrArray(array);
            ArrayService.WriteArray(array);
            
            
            Console.ReadKey();
        }
    }
    
    static class ArrayService
    {
        static public void WriteArray (int[,] array)
        {    
            int  arraySide = (int)Math.Sqrt(array.Length);
            for (int i = 0; i < arraySide; i++)
            {                
                for (int j = 0; j < arraySide; j++)
                {                   
                    Console.Write("{0}\t", array[i, j]);
                }
                Console.Write("\n");
            }
        }
        
        static public int[,] CreateRandomArray (int side)
        {    
            Random rand = new Random();
            int[,] array = new int[side, side];
            
            for (int i = 0; i < side; i++)
            {                
                for (int j = 0; j < side; j++)
                {                   
                     array[i, j] = rand.Next(-100, 100);   
                }               
            }
            return array;
        }
        
        static private int[] GetPerimetrValue (int [,] array)
        {
            int  arraySide = (int)Math.Sqrt(array.Length);
            int [] result = new int [(arraySide*4-4)];
            int next = 0;
            
            for (int i = 0; i < arraySide; i++)
                result [next++] = array[0,i];
            
            for (int i = 1; i < arraySide-1; i++)
                result [next++] = array[i,arraySide-1];
            
            for (int i = arraySide-1; i >0; i--)
                result [next++] = array[arraySide-1,i];
            
            for (int i = arraySide-1; i > 0; i--)
                result [next++] = array[i,0];
            
            return result;
        }
        
        static public int [,] SortPerimetrArray (int [,] array)
        {
            int [] sortedValue = GetPerimetrValue(array);
            Array.Sort(sortedValue);
            int  arraySide = (int)Math.Sqrt(array.Length);
            
            int next = 0;
            
            for (int i = 0; i < arraySide; i++)
                 array[0,i] = sortedValue[next++];
            
            for (int i = 1; i < arraySide-1; i++)
                array[i,arraySide-1]= sortedValue[next++];
            
            for (int i = arraySide-1; i >0; i--)
                array[arraySide-1,i] = sortedValue[next++];
            
            for (int i = arraySide-1; i > 0; i--)
                array[i,0] = sortedValue[next++];   
            
            return array;
        } 
    }
2
Fipul
0 / 0 / 0
Регистрация: 12.01.2015
Сообщений: 7
21.01.2015, 13:40 #5
Не могли бы вы запилить это с возрастанием?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2015, 13:40
Привет! Вот еще темы с ответами:

Отсортировать по возрастанию элементы стоящие по периметру матрицы по часовой стрелке - Turbo Pascal
Дана матрица nxm. Отсортировать по возрастанию элементы стоящие по периметру матрицы, начиная с элемента A(n,1) по часовой стрелке. Среди...

Заполнить квадратную матрицу числами по периметру - C++
Уважаемые форумчане такой вопрос нужно вывести и заполнить квадрат 5x5 цифрами. По середине должны быть 0 на примере показано как надо...

Заполнить матрицу: по периметру записывается число, совпадающее с порядком матрицы - C++
Помогите.Решить задачу: заполнить квадратную матрицу порядка N по следующему правилу: по периметру записывается число, совпадающее с...

Преобразовать матрицу Аm,n, переместив против часовой стрелки элементы, которые расположены по ее периметру. - Pascal
Преобразовать матрицу Аm,n, переместив против часовой стрелки элементы, которые расположены по ее периметру. уважаемые форумчане,...


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

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

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