Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2013, 22:21   #1
DimaNIKul
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 17
По умолчанию Алгоритм функции c#

Доброго времени суток всем! Помогите разобраться с алгоритмом функции, данная функция переносит группу, содержащую наибольшее число равных положительных элементов в начало массива. Мне просто надо сделать описание к этой фунцкии, а я до конца не разобрался, понял то что перебирается массив с 1 по n-1 элемент, если элементы массива положительны тогда сравниваем i и i-1 элементы и увеличиваем счетчик, если они равны, а дальше не разберусь. Помогите пожалуйста. Вот сам код:
Код:
static void duplicate(int[] A)
        {
            int length = 1;
            int max_length = 0;
            int index_last = 0;
            //int n=0;
            for (int i = 1; i < A.Length; i++)  // идем с 1 по n - 1 элемент
            {
                if (A[i] > 0)
                {
                    if (A[i] == A[i - 1]) // если равны i и i-1 элементы 
//увеличиваем счетчик
                    {
                        length++;
                    }
                    else
                    {
                        if (length > max_length)
                        {
                            max_length = length;
                            index_last = i - 1;
                        }
                        length = 1;
                    }
                }
            }
            if (length > max_length)
            {
                max_length = length;
                index_last = A.Length - 1;
            }
            if (max_length == 1)
            {
                max_length = 0;
            }
            for (int i = index_last - max_length + 1; i <= index_last; i++)
            {
                int temp = A[i];
                for (int j = i; j > 0; j--)
                {
                    A[j] = A[j - 1];
                }
                A[i - (index_last - max_length + 1)] = temp;
            }
        }
DimaNIKul вне форума Ответить с цитированием
Старый 04.02.2013, 12:51   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Алгоритм простой (и содержит логические ошибки):
Код:
Инициализируем "максимальную длину" нулём
Инициализируем "текущую длину" единицей
Инициализируем "конец" нулём
Идём по последовательности, начиная со второго члена.
  Если очередной член больше нуля,
    Если он ещё и равен предыдущему - у нас продолжается последовательность равных
      Тогда увеличиваем "текущую длину" на 1
    А если нет - значит, последовательность равных закончилась
      Тогда, если "текущая длина" больше "максимальной",
        Запоминаем новую "максимальную длину" и новый "конец"
      И в любом случае, сбрасываем "текущую длину" обратно в 1
Если произошёл выход из цикла - ещё раз проверяем "текущую длину"
  Если она больше "максимальной", запоминаем новую "максимальную длину" и новый "конец".
Если "максимальная длина" равна 1, устанавливаем её в 0 (???)
КАК ПРЕДПОЛАГАЕТСЯ, у нас есть конец самой длинной последовательности и её длина. Переносим её в начало.
Abstraction вне форума Ответить с цитированием
Старый 04.02.2013, 20:01   #3
DimaNIKul
Пользователь
 
Регистрация: 02.02.2013
Сообщений: 17
По умолчанию

Спасибо!!!
DimaNIKul вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать алгоритм и программу нахождения значения функции oly557964 Паскаль, Turbo Pascal, PascalABC.NET 0 03.02.2012 19:13
Алгоритм для вычисления функции student_13 C# (си шарп) 0 02.02.2012 22:49
Разработать алгоритм и сложить программу вычесленния функции steep_zero Помощь студентам 1 23.03.2011 18:14
Алгоритм построения графика функции... serg_yl Qt и кроссплатформенное программирование С/С++ 0 08.03.2011 19:57
Алгоритм вычисления значения функции vzr Свободное общение 9 30.03.2010 20:14