• Поменять местами 1ый отрицательный и последний положительный элементы в матрице. Как исправить ошибку?

    @Myclass
    Не сильно вдавался в логику, но что сразу бросилось в глаза, то что переменная indexOfPositiveElement получает инит.значеие -1, и потом по всяким проверкам может и не изменится. После этого вы проверяете её на меньше или равно нулю. И в этом случае даже без того, что вы обнаружили положительный эелемент, вы всё равно хотите переставлять значения. Тоже самое и с переменной indexOfNegativeElement. Оба места я отметил жирным шрифтом.

    if (indexOfNegativeElement >= 0 && indexOfPositiveElement <= 0)
    {
    int temp = mas[indexOfNegativeElement];
    mas[indexOfNegativeElement] = mas[indexOfPositiveElement];
    mas[indexOfPositiveElement] = temp;
    }
    listBox2.Items.Add(mas[i].ToString());

    if (indexOfNegativeElement <= 0 && indexOfPositiveElement >= 0)
    {
    int temp = mas[indexOfNegativeElement];
    mas[indexOfNegativeElement] = mas[indexOfPositiveElement];
    mas[indexOfPositiveElement] = temp;
    }
    listBox2.Items.Add(mas[i].ToString());


    А вообще я посоветовал-бы вам названия кнопок и листков итд. называть так, что они из себя представляют. Т.е. кнопка например или "btnSwapPairItems", или если не комильфо без ""btn. Это первое. Второе, у вас есть в этой функции одно и то-же повторяющее действие. Выведите его в отдельную функцию. Например назовите её "SwapPairItemsInList" и передайте ей параметры первого и второго элемента, которые должны быть переставлены и вызывайте эту функцию кадый раз (здесь уже два раза), когда надо переставить два елемента. Если такое повторяется не только в этом окне и не только с этим списком, а в 100 других местах, то выведите эту функцию в отдельный класс и увеличьте параметер этой фукции ещё одним - Reference на этот лист-контроль. И всё - вам никогда больше не надо будет ручками это опять набивать. Жалейте своё время.

    После просмотра обратил ещё на одну вещь внимание. Никогда не используйте просто числа, как у вас в циклах проверок. Все эти 9 и 10 - сегодня вы знаете, почему 9 и 10, завтра - нет. Сегодня 9, завтра 900. Вам что весь код переписывать. Для таких вещей всегда используйте константы или именно в этом окне, если это значение играет роль не только в этом окне, но и в других выводите в отдельный класс со всеми константами по этой тематике. Обзываете её например " public const Int32 MaxItemsInSwapList = 9", и используйте её здесь в функции и всё - и через 9 лет вы в курсе, что эта 9 значит. Или, если 10 или 9 вообще не играют никакой роли, то тогда опрашивайте количество элементов в списке, перед тем, как пробегаете все значения этого списка....., но не числа.
    Ответ написан
    Комментировать