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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2017, 00:24   #1
dan105
Новичок
Джуниор
 
Регистрация: 16.10.2017
Сообщений: 1
По умолчанию Сортировка столбцов матрицы А, все элементы которых присутствуют в массиве В

"Для решения задачи необходимо использовать алгоритмы с досрочным выходом из цикла. Даны целочисленная матрица A [1: n, 1:m] и целочисленный массив B [1: k]. Упорядочить по убыванию те столбцы матрицы A, все элементы которых присутствуют в массиве B."

Как сделать сортировку еще более-менее понимаю, но вот проверить на присутствие в массиве никак не получается. Как только не пробовал, в итоге только код совсем загадил. Подскажите,как лучше сию задачу решить
Код:
program sorting;
const nmax=10;
mmax=20;
kmax=25;
Type matr=array[1..nmax,1..mmax] of integer;
mass=array[1..nmax] of integer;
var a: matr; b:mass;
i, j, k, n, m, r,u,o:integer;
flag:boolean;
begin
 
repeat
   writeln('Введите n от 1 до ',nmax,' и m от 1 до ', mmax);
   read(n,m);
until(n>0) and(m>0) and (n<=nmax) and(m<=mmax);
writeln('Введите матрицу размера ',n,' на ', m );
for i:=1 to n do
   for j:=1 to m do
      read(a[i,j]); 
      
   repeat
   writeln('Введите k от 1 до ',kmax);
   read(k);
until (k>0) and (k<=kmax);
writeln('Введите массив длиной ',k);
for i:=1 to k do
   read(b[i]);  
   
   writeln('Матрица А');
for i:=1 to n do
   begin
   for j:=1 to m do
      write(a[i,j]:8);
   writeln;
   end; 
   writeln('Массив В');
   for i:=1 to k do
 
  write(b[i]:8);
  writeln;
 
for j:=1 to m do
  for i:=1 to n do  begin
r:=1;
 
while (r<=k) do begin
 
 
if (a[i, j] = b[r]) then
  repeat
  flag:=true;
   for o:=1 to n-1 do begin
      if a[o, j] > a[o+1, j] then
      u:=a[o, j];
      a[o ,j]:=a[o+1, j];
      a[o+1, j]:=u;
      flag:=false;
      end;
     r:=r+1; 
  until flag
  
 end;
end;
writeln('Сортированный массив');
 for i:=1 to n do
   begin
   for j:=1 to m do
      write(a[i,j]:8);
   writeln;
   end;
end.
dan105 вне форума Ответить с цитированием
Старый 17.10.2017, 16:22   #2
Heilagr
 
Регистрация: 29.09.2017
Сообщений: 4
По умолчанию

Поиск на соответствие элементов из столбца матрицы и массива.
Код:
For j:=1 to m do
begin
  kol:=0;
  for i:=1 to n do
   begin
     for c:=1 to k do 
      begin
        if a[i,j]==b[c] then
        begin
          inc(kol);    //определяем количество совпадения элементов из a, b
          break;
       end; 
     end;
   end;
   if kol==n then  //если количество совпадений равно количеству элементов столбца, тогда сортировка происходит
      begin
       //здесь идет сортировка
      end;
end;

Последний раз редактировалось Heilagr; 17.10.2017 в 16:27.
Heilagr вне форума Ответить с цитированием
Старый 17.10.2017, 16:59   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию



Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана целочисленная матрица M*N. Найти количество и номера ее столбцов, все элементы которых различны. marinadanilova Помощь студентам 1 28.10.2014 22:19
Найти и закрасить строки матрицы, все элементы которых различны Kate1414 Общие вопросы Delphi 1 11.06.2014 13:18
Удалить из массива все элементы, значение которых в этом массиве повторяются, оставив по одному. East Undia Trading Помощь студентам 10 23.10.2013 08:25
Найти какие элементы массива В присутствуют в массиве А S.I.D. Помощь студентам 3 16.12.2012 19:33
Упорядочить по убыванию столбцы матрицы, все элементы которых присутствуют в массиве. Gluck231 Помощь студентам 0 19.01.2012 09:59