Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
YuraChudnick
0 / 0 / 0
Регистрация: 27.10.2014
Сообщений: 3
1

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

27.10.2014, 21:48. Просмотров 1040. Ответов 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# её пожалуйста: ...

Отсортировать матрицу
Дана целочисленная прямоугольная матрица: Характеристикой строки...

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

Сумма по периметру
Привет всем! У меня вопрос: как можно посчитать сумму элементов по периметру...

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

4
SmashDream
40 / 32 / 24
Регистрация: 09.06.2012
Сообщений: 144
28.10.2014, 12:06 2
YuraChudnick, а что такое периметр матрицы ?
0
AdamFreeman
23 / 23 / 16
Регистрация: 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 / 15
Регистрация: 18.09.2013
Сообщений: 115
28.10.2014, 13:28 4
Лучший ответ Сообщение было отмечено 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
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
21.01.2015, 13:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2015, 13:40

Отсортировать элементы по периметру матрицы по возрастанию
Отсортировать элементы по периметру матрицы по возрастанию. Направление:...

Отсортировать по возрастанию элементы стоящие по периметру матрицы по часовой стрелке
Дана матрица nxm. Отсортировать по возрастанию элементы стоящие по периметру...

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


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

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

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