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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 20:09   #1
Determinant666
 
Регистрация: 02.03.2011
Сообщений: 7
Вопрос Сложная задача с матрицей

По ходу программы пришлось столкнутся с обработкой матрицы...
необходимо преобразовать матрицу по заданному количеству одинаковых элементов...то есть, например: имеется входящая матрица:
1 1 2 2
0 3 3 0
4 4 5 5
0 6 6 0

в данном случае максимальное количество разных эелементов в матрице 2, именно (1 и 2) в первой строке, (4 и 5) во второй, вопрос теперь в том как сделать что б пользователь вводил максимальное количество одинаковых элементов и данная матрица трансформировалась, например если ввести количество таких элементов равных 1, то данная матрица должна принять вид:
1 1 0 0
0 0 2 2
0 3 3 0
4 4 0 0
0 0 5 5
0 6 6 0

то есть в каждой строке не более 1 разного элемента...
вот как такой алгоритм сделать, уже совсем запутался...может кто сталкивался с таким, очень прошу помощи!
Вот если что кусок кода где я пытался это сделать:

Код:
long *N = new long[f];
 for (int i=0; i<e-1; i++){ t=0;
  for (int j=0; j<f-1; j++)
  { N[j]=mat[i][j];
   if (be>kil) o++;
    for (int k=i; k<f; k++)
     {
     if ((mat[i][k]==N[j]) && (k!=j)) Form2->StringGrid1->Cells[o+1][k+1]=IntToStr(N[j]); }
     for (int k=0;k<f-1;k++)
        {
        if (Form2->StringGrid1->Cells[j+1][k+1])=='') Form2->StringGrid1->Cells[j+1][k+1])='0';
        if ((N[j]==StrToInt(Form2->StringGrid1->Cells[j+1][k+1])) && (k!=j)) t++;
        if (t==0) l++;}
        }
     be=l;

    //for (int k=i; k<f; k++){
     //if (be>=kil) t++;
    // if (mat[i][k]==0) {Form2->StringGrid1->Cells[t+1][i+1]=IntToStr(mat[i][j]); }
    // if ((mat[i][j]==mat[i][k]) && (k!=j)) {Form2->StringGrid1->Cells[t+1][i+1]=IntToStr(mat[i][j]);  be++; }
    // if ((mat[i][j]!=mat[i][k]) && (k!=j)) {be++; if (be<kil) Form2->StringGrid1->Cells[t+1][i+1]=StrToInt(mat[i][j]); else {Form2->StringGrid1->Cells[j+1][t+1]='0'; t++; continue;}}
    //  else if (mat[i][k]!=0) {Form1->StringGrid1->Cells[j+1][i+1]='0'; be++;}

      }

}
заранее спасибо!!!



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 07.11.2011 в 09:25.
Determinant666 вне форума Ответить с цитированием
Старый 06.11.2011, 12:01   #2
Determinant666
 
Регистрация: 02.03.2011
Сообщений: 7
По умолчанию

ММ(( у кого все таки есть какие то предложения?? а то уже совсем замучился, может кто то уже сталкивался или легче алгоритмы даються!?
Determinant666 вне форума Ответить с цитированием
Старый 06.11.2011, 21:28   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Почему Вам не ответили в теме? Нет чёткой постановки вопроса. Приведённый код ни к чему не вяжется , это просто отрывок. К тому-же открывающие и закрывающие скобки не парные. И код оформлен не по "правилам".
В общем - ФУ. Даже разбираться не буду. Если Вы к нам так относитесь, какого отношения к вы требуете от нас?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сложная задача ugradvizhok Помощь студентам 1 30.03.2011 23:30
С++ Сложная задача sir.andrey Помощь студентам 12 26.10.2010 20:25
Рекурсия - сложная задача! RomT24 Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2009 23:14
Сложная задача asale Microsoft Office Excel 6 07.04.2009 20:36