Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа с матрицами


Автор: lenin_yo 24.11.2007, 11:58
Помогите.
Есть максимальный элемент и
путем перестановок строк и столбцов (целиком) этот элемент
 надо переместить в правый верхний угол матрицы.

Автор: JackYF 24.11.2007, 12:18
lenin_yo, c твоей стороны код будет? Если нет, тогда в Центр Помощи.

Автор: lenin_yo 24.11.2007, 13:21
Есть функция:

Код

int pArr (int NewSize,int** Array)
{    if (NewSize>=2)
     {    int** Start;
    Start=Array+1;
    int Max=Start[0][0];
    for(int i=0;i<NewSize-1;i++)
    {   for(int j=0;j<NewSize-1;j++)
         {    if(Start[i][j]>Max)
              Max=Start[i][j];
            }
    }
      cout<<"\t"<<Max;
      pArr(NewSize-1,Start);
      }
      return 0;
}


и есть процедура замены последней строки и последнего столбца:
Код
 
int Tmp
for(int i=NewSize-1;i>=0;i--)
{   Tmp=Start[NewSize][i];
     Start[NewSize][i]=Start[i][NewSize];
     Start[i][NewSize]=Tmp;
}

Необходимо модефицировать функцию вставив в нее подобную процедуру.
Надо, наверное п-ра для замены произвольного столбца и строки.(как сделать?)
Но поставить элемент в правыйй верхний угол всеравно не пойму как

Добавлено через 1 минуту и 51 секунду
Если макс элемент в центре матрици 3х3 ??

Автор: bsa 24.11.2007, 13:32
Все просто. делается максимум в три приема (если можно менять местами любой столбец с любым и любую строку с любой). сначала находится строка и столбец с наибольшим элементом, меняются местами (например) столбец с максимальным элементом и крайний правый, затем строка с максимальным элементом и верхняя. Все:
Код
0 1 0    0 0 1    0 0 4
0 4 0 -> 0 0 4 -> 0 0 1
0 2 0    0 0 2    0 0 2

Автор: lenin_yo 24.11.2007, 16:48
Спасибо.
Я тоже так подумал.Просто о замене столбцов и сторк местами сразу не сообразил.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)