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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2015, 13:28   #1
jon4eg
 
Регистрация: 06.12.2013
Сообщений: 4
По умолчанию Объясните принцип работы программы(удаление столбца из матрицы)

Есть кусок программы, который удаляет из матрицы столбец с наибольшей по модулю суммой элементов.
Код:
int* Transplanirovanie(int *A, int m, int &n)
{
    int nColumn=0;
    int maxSum=0;
    for(int j=0; j<n; j++)
    {
        int Sum=0;
        for  (int i=0; i<m; i++)
        {
            Sum+=abs(A[i*n+j]);
        }
       if(maxSum<Sum)
       {
           maxSum=Sum;
           nColumn=j;
        }
    }
    n--;
    int *newA=new int[n*m];
    for(int i=0; i<m; i++)
    {
        int k=0;
        for(int j=0; j<n; j++)
        {
          newA[i*n+j]=A[i*n+j+i+((nColumn<=j)?1:0)];
        }
    }
    return newA;
}
Объясните пожалуйста вот эту строчку
Код:
 newA[i*n+j]=A[i*n+j+i+((nColumn<=j)?1:0)];
Зачем здесь прибавлять еще одно i и "((nColumn<=j)?1:0)" вот эту конструкцию?
Заранее спасибо
jon4eg вне форума Ответить с цитированием
Старый 10.01.2015, 14:19   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

А где Вы тут увидели матрицу? Здесь одномерный массив, с матричным расположением данных. Для вычисления строки-столбца используется вышеуказанная формула. Ещё одно i не два раза прибавляется, а один раз. Это нужно для доступа к конкретному элементу матричного массива.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 10.01.2015, 14:26   #3
jon4eg
 
Регистрация: 06.12.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
А где Вы тут увидели матрицу? Здесь одномерный массив, с матричным расположением данных. Для вычисления строки-столбца используется вышеуказанная формула. Ещё одно i не два раза прибавляется, а один раз. Это нужно для доступа к конкретному элементу матричного массива.
Да, ошибся, это массив. Но все же зачем мы прибавляем i? Я не совсем понимаю. И зачем прибавлять 1, если номер столбца меньше или равен номеру столбца, который мы удалили
jon4eg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните принцип работы danada1 Помощь студентам 1 27.03.2013 15:20
Объясните принцип работы ф-ции.... MyXa C# (си шарп) 2 01.11.2012 16:56
объясните принцип программы s4egol Помощь студентам 2 28.10.2012 17:51
принцип работы программы sasha14486 Общие вопросы C/C++ 1 22.05.2011 12:36
Объсните принцип работы программы Ge0rGE Помощь студентам 1 10.06.2009 21:50