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

Отсортировать одномерный массив и запомнить позиции перестановок

04.08.2016, 20:49. Показов 2442. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача состоит в том, чтоб отсортировать одномерный массив в порядке убывания следующим образом:
Шаг 1. Найти наибольшее значение в массиве.
Шаг 2. Поменять элемент с наибольшим значением с элементом в начале массива, то есть с элементом под индексом 0, при этом сохраняю позицию найденного в отдельном массиве. То есть, если наибольшее значение было 100 под индексом 10, то 0 меняю местами с 10, а цифру 10 сохраняю в новом массиве под индексом 0.
Шаг 3. Возвращаюсь на шаг 1, только уже ищу наибольшее значение, которое меньше уже найденного.

Как оказалось, мне не хватает извилин, чтоб реализовать данный алгоритм. Пример добавленного кода то, что я придумал, но находится только первый элемент и условие if срабатывает несколько раз до его нахождения, то есть массив, к моменту нахождения первого наибольшего уже испорчен.
Заранее благодарен за любые рекомендации!


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public static void SortArray()
 {
        var a = new[] {  6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24 };
        int[] c = new int[18];
        
        int max = a[0];
for(int m = 0; m < a.Length; m++)
   {
        for(int i = 0; i < a.Length; i++)
        {
             if(a[i] > max)
             {
                  max = a[i];
                  a[i] = a[m];
                  a[m] = max;
                  c[m] = i;
             }
 
        }
 
    }
 
 }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2016, 20:49
Ответы с готовыми решениями:

Сформировать массив из четных чисел матрицы, и отсортировать массив методом перестановок
Проблема заключается в том , что при вызове метода сортировки Перестановками программа не видит одномерный массив.Вот код : using System;...

Отсортировать массив за минимальное кол-во перестановок
Всем доброго дня! Наткнулся недавно на задачу с hackerrank.com, где необходимо отсортировать массив за минимальное кол-во перестановок. ...

Массив отсортировать по возрастанию, используя метод парных перестановок.
Помогите разработать программу, выполняющие следующие действия:1. Ввод размера массива 2. Выделения памяти под исходный массив...

11
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
04.08.2016, 21:48
https://msdn.microsoft.com/ru-... 2147217396
0
0 / 0 / 1
Регистрация: 29.07.2016
Сообщений: 6
04.08.2016, 22:08  [ТС]
Я и сам сначала попробовал использовать методы Array.Sort и Array.Reverse, но тут надо по одному элементу сортировать. То есть когда я нашел первый наибольший и переместил его в начало массива, то у элемента на который я заменил наибольший тоже поменялся индекс, следовательно так просто не выйдет..

Слышал что данный алгоритм можно решить методами - merge sort, heap sort, quick sort, но не могу найти достойных материалов, которые будут понятны простому смертному!..((=
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
07.08.2016, 16:57
Путанно конечно ,но мне кажется от этого можно оттолкнуться.Я не профи("корочки "нет)
Закомментированное можете не воспренимать.

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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication2_Were
{
    class Program
    {
         
        public static void SortArray()
        {
            var a = new[] { 45, 4, 48, 22, 581, 6, 49, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24 };
            int[] c = new int[18];
 
            int index_maxValue = 0;
            int s = a[0];
            int index_0 = 0;
            // max = a.Count(x => x == a[0]);
            //a = a.Where(x => x == a[0]).ToArray();
            Console.Write("Не сортированный массив:\n");
 
            for (int e = 0; e < a.Length; ++e)
            {
                Console.Write(a[e] + ",");
            }
   
            for (int t = 0; t < a.Length; ++t)
            {
                if (a[t] == a.Max())
                    index_maxValue = t;
                    a[0] = a.Max();
                if (a[0] == a.Max())
                    a[index_maxValue] = s;
 
                    c[0] = index_maxValue;
               // if (a[t] < a[0])
               // int r = a.Single(x => x == a[0]);
               //r = -1;
            }
            Console.Write("\nСортированный массив:\n");
            for (int w = 0; w < a.Length; ++w)
            {
                Console.Write(a[w] + ",");
            }
            Console.Write("\nМассив индексов по убыванию:\n");
            for (int f = 0; f < a.Length; ++f)
            {
                Console.Write(c[f] + ",");
            }
 
            Console.ReadKey();
        }
      
           // Console.Write("{0}  {1}", index_max, a[0]);
        
        static void Main(string[] args)
        {
            SortArray();
        }
    }
}
Добавлено через 2 минуты
tsvetashov,может у Вас появится идея как продолжить алгоритм или упростить???
0
0 / 0 / 1
Регистрация: 29.07.2016
Сообщений: 6
07.08.2016, 21:09  [ТС]
Цитата Сообщение от Веселый Посмотреть сообщение
Путанно конечно ,но мне кажется от этого можно оттолкнуться.Я не профи("корочки "нет)
Закомментированное можете не воспренимать.


Добавлено через 2 минуты
tsvetashov,может у Вас появится идея как продолжить алгоритм или упростить???
Спасибо, но результат такой же как и в моем примере.
Плюс, вместо этих библиотек:
C#
1
2
3
4
5
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
могу использовать только:
C#
1
using System;
(моя оплошность, не обозначил это в начале темы)

то есть, метод .Max мне тоже не доступен.
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
08.08.2016, 08:15
Лучший ответ Сообщение было отмечено tsvetashov как решение

Решение

tsvetashov, вот решение без using
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
class Program
    {
        static void Main(string[] args)
        {
            var a = new[]
            {
                6, 4, 48, 22, 581, 6, 45, 7, 6, 6,
                44, 5, 6, 7, 65, 2, 17, 24
            };
            var b = new int[a.Length];
 
            // 1
            var max = int.MinValue;
            for (int j = 0, i = j, n = 0; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
        }
    }
Здесь
using System; нужен только для Console
C#
1
2
3
4
5
6
7
8
9
10
11
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(b[i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);

Полный вариант с консолью
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
class Program
    {
        static void Main(string[] args)
        {
            var a = new[]
            {
                6, 4, 48, 22, 581, 6, 45, 7, 6, 6,
                44, 5, 6, 7, 65, 2, 17, 24
            };
            var b = new int[a.Length];
 
            // 1
            var max = int.MinValue;
            for (int j = 0, i = j, n = 0; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(b[i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);
        }
    }


Ну и решение в один цикл с переменными только внутри цикла 8-)

Дано:
C#
1
            var a = new[] {6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24};
Решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            var b = new int[a.Length];
            for (int j = 0, i = j, n = 0, max = int.MinValue; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
Вывод:
C#
1
2
3
4
5
6
7
8
9
10
11
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(b[i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);
Полный вариант

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
    class Program
    {
        static void Main(string[] args)
        {
            var a = new[] {6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24};
            var b = new int[a.Length];
 
            for (int j = 0, i = j, n = 0, max = int.MinValue; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(b[i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);
        }
    }


Добавлено через 17 минут
tsvetashov, ну и метод
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        public int[][] ArraySort(int[] a)
        {
            var b = new int[a.Length];
            for (int j = 0, i = j, n = 0, max = int.MinValue; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
            return new int[][] { a, b };
        }
Весь код
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
using System;
 
namespace ArraySort
{
    class Program
    {
        static void Main(string[] args)
        {
            var a = new[] {6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24};
 
            var sort = new Program().ArraySort(a);
 
            for (int i = 0; i < sort[0].Length; i++)
            {
                Console.Write(sort[0][i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < sort[1].Length; i++)
            {
                Console.Write(sort[1][i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);
        }
 
        public int[][] ArraySort(int[] a)
        {
            var b = new int[a.Length];
            for (int j = 0, i = j, n = 0, max = int.MinValue; j < a.Length; ++i)
            {
                if (a[i] > max)
                {
                    max = a[i];
                    n = i;
                }
                if (i == a.Length - 1)
                {
                    b[j] = n;
                    a[n] = a[j];
                    a[j] = max;
                    j++;
                    i = j - 1;
                    max = int.MinValue;
                }
            }
            return new int[][] { a, b };
        }
    }
}
2
Заблокирован
08.08.2016, 10:29
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 var a = new[] { 6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24 };
            var b = new int[a.Length-1];
 
            for (int i = 0, j = 0; ; b[j] = (a[++i] > a[b[j]]) ? i : b[j])
            {
                if (i == a.Length - 1)
                {
                    i = a[b[j]];
                    a[b[j]] = a[j];
                    a[j] = i;
                    if (++j != a.Length - 1) i = b[j] = j; else break;
                }
            }
1
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
17.08.2016, 19:39
EveKS,Dsasdf прокомментируйте пожалуйста Ваши коды.
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
17.08.2016, 19:45
Веселый, я бы начал с того, какая часть в коде моем или не моем -- не понятна? и почему? Что было предпринято для понимания, помимо вопроса на форуме ?
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
19.08.2016, 16:17
EveKS,попробовал прокомментить Ваш код сам . Сидел долго аж вспотел.Код написан интересно!!!
Смотрим,поправляем:

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
class Program
    {
        static void Main(string[] args)
        {
            //var a = new[] { 6, 4, 48, 22, 581, 6, 45, 7, 6, 6, 44, 5, 6, 7, 65, 2, 17, 24  };
 
            var a = new[] { 6, 4, 48, 22, 581, 8, 45, 90, 9, 3, 44, 5, 35, 7, 65, 2, 17, 24 };
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }      
            Console.Write("\n");
 
            Console.Write("БЛОКИ :");
 
            var b = new int[a.Length];
            var max = int.MinValue;
            //Console.Write(max);
           // Console.ReadKey();
            for (int j = 0, i = j, n = 0; j < a.Length; ++i)
            {
                if (a[i] > max)            // Условие поиска максимального числа в 1-ом блоке из 3-х цифр (если передвинуть max 581 всё изменится в блоке)
                {
                    max = a[i];
                    n = i;
                    Console.Write(max + " ");// Блоки(от Весёлого- для понятия).Получилось 18 блоков от количества элементов в массиве (а)
                   // break;
                }
                if (i == a.Length -1)   // Условный оператор для перемещения элементов массива (а) и перезапуска цикла
                {
 
                   b[j] = n;            // Добавление index_max в массив индексов
                   a[n] = a[j];         // перестановка элементов 
                   a[j] = max;
                   j++;                 // Добавление к переменной j в цикле +1(int j = 1).Для смещения индекса нового- первого элемента массива - var a вместо 581 
                   i = j - 1;           // Присваиваем i значение = 0 ,для работы условного оператора  if (a[i] > max), и перезапуска цикла for 
                   max = int.MinValue; // 
                    
                    Console.Write("("+j+")  ");// Получилось 18 блоков выполнения от количества элементов в массиве (а)
                    // break;                  // Рзделение цикла на ступени при помощи оператора - break; (от Весёлого- для понятия раскоментить break; )
                }
            }
            Console.Write("\n");
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(a[i] + " ");
            }
            Console.WriteLine();
            for (int i = 0; i < a.Length; i++)
            {
                Console.Write(b[i] + " ");
            }
            Console.WriteLine();
            Console.ReadKey(false);
        }
    }
0
 Аватар для EveKS
601 / 485 / 185
Регистрация: 19.04.2016
Сообщений: 1,885
19.08.2016, 16:53
Веселый,
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
          var arr = new[]
            {
                6, 4, 48, 22, 581, 6, 45, 7, 6, 6,
                44, 5, 6, 7, 65, 2, 17, 24
            }; //массив
            var arrIndex = new int[arr.Length - 1]; // массив наших будущих индексов
                                           // перестоновок, исправил на -1
                                           // т.к. последняя цифра не поменяет
                                           // свою позицию
 
            var max = int.MinValue;        // создал переменную максимум
                                           // можно было var max = arr[0];
                                           // или var max = arr.Min();
                                           
            for (int j = 0, i = j, n = 0; j < arr.Length - 1; ++i)
            // создал цикл
            // i используется для arr
            // j используется для arrIndex
            // n для хранения нашего индекса максимального значения 
            {
                if (arr[i] > max) // если число в массиве под индексом i
                                  // больше max, то выполнить условие
                {
                    max = arr[i]; // наша переменная max принимает значение 
                                  // этого числа под индексом i
                    n = i;        // здесь мы запоминаем индекс того самого
                                  // максимум
                }
                if (i == arr.Length - 1) // Как только наш индекс равен 
                                         // arr.Length - 1, т.к. длинна считается
                                         // с 1, а индексация идет с 0
                {
                    arrIndex[j] = n;     // наш массив индексов принимает индекс максимума
                    arr[n] = arr[j];     // здесь происходит перестановка
                    arr[j] = max;
                    j++;                 // j +1
                    i = j - 1;           // меняем стартовую позицию i (-1 из-за ++i)
                                         // т.е поск каждый раз начинается
                                         // со значения на 1 больше
                                         // 0, 1, 2, 3, 4, 5...
                    max = int.MinValue;  // сбрасываем max
                }
            }
0
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
20.08.2016, 13:22
C#
1
2
3
4
5
i = j - 1;           // меняем стартовую позицию i (-1 из-за ++i)
                                         // т.е поск каждый раз начинается
                                         // со значения на 1 больше
                                         // 0, 1, 2, 3, 4, 5...
                    max = int.MinValue;  // сбрасываем max
EveKS,не одно-ли это и тоже ???

C#
1
2
3
4
5
6
 j++;                 // Добавление к переменной j в цикле +1(int j = 1).Для смещения индекса нового- первого элемента массива - var a вместо 581 
                   i = j - 1;           // Присваиваем i значение = 0 ,для работы условного оператора  if (a[i] > max), и перезапуска цикла for 
                   max = int.MinValue; // 
                    
                    Console.Write("("+j+")  ");// Получилось 18 блоков выполнения от количества элементов в массиве (а)
                    // break;                  // Рзделение цикла на ступени при помощи оператора - break; (от Весёлого- для понятия раскоментить break; )
Добавлено через 11 минут
Я понял работу Вашей программы .Но прокомментировал согласно Своих знаний...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.08.2016, 13:22
Помогаю со студенческими работами здесь

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный массив перевести построчно в одномерный...

Задан одномерный массив. Отсортировать массив в порядке убывания и возрастания элементов
Задан одномерный массив. Отсортировать массив в порядке убывания и возрастания элементов. Напишите пожалуйста код

Создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию
создать одномерный массив, заполнить его случайными значениями, отсортировать массив по убыванию. получилось вот что: #include...

Одномерный массив. Поменять местами первый и последний элементы и отсортировать массив по возрастанию методом выбора
Одномерный массив F(N) заполнен случайным образом поменять местами первый и последний элементы и отсортировать массив по возрастанию...

Дан одномерный массив A(N), отсортировать массив по убыванию
Дан одномерный массив A(N),отсортировать массив по убыванию. Найти количество отрицательных элементов стоящих на


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
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 Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
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 позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru