Помогите, пожалуйста написать программку на Паскале(либо желая бы алгоритм на том

Помогите, пожалуйста написать программку на Паскале(либо желая бы алгоритм на том же языке).в матрице А[5,5] отыскать все строчки, совпадающие со строчками матрицы В[5,5]. Переформировать матрицу А так, чтобы найденные строчки размещались в её начале, а другие в конце.

Задать свой вопрос
Кобзон Надежда
Т.е. даже не писать, а ставить флаг. Например, true - переставляем, false - нет.
Константин Деньчук
Ох, ну это сложно будет
Виктория Шмованова
Ну это как если на бумажке мы бы птичками отметили часть строк
Беглова Эвелина
Далее берем первую строчку в матрице А и отыскиваем в В такую же.
Валерий
Есть - пишем в 1-ый элемент нашего вектора true, а иначе пишем false. Повторяем процесс для других строк в A. Это мы "проставили птички"
Береза Павел
Довольно сейчас просмотреть наш вектор и найти, какие строчки пойдут вверх. Либо вниз, маловажно.
Арсений Дрочнев
Суть - обменивать обменивать местами пару строк - с пометкой и без пометки
Вася Столбунцов
Вот и все.
Ваня Тоников
Это если на месте поменять строки. А если создать вспомогательную матрицу 5х5, это вообще "легкотня", тогда и вектор не нужен.
Анна Матюшечко
Есть совпадение - гоним строку во вспомогательную матрицу наверх, нет - вниз. И заполняем навстречу друг-другу строчки. Позже А убиваем, а вспомогательная будет заместо нее.
1 ответ

PascalABC.NET 3.4.2, сборка 1864 от 11.11.2018

Внимание! Если программка не работает, обновите версию!

begin

 var a := new integer[5, 5](

     (2, 4, 5, 1, 3),

     (7, 2, 9, 0, 2),

     (6, 4, 1, 0, 1),

     (8, 4, 7, 2, 0),

     (6, 0, 0, 2, 1));

 Println('Массив A');    

 a.Println(2);

 Println('Массив B');

 var b := new integer[5, 5](

     (2, 4, 5, 0, 3),

     (6, 0, 3, 2, 1),

     (2, 4, 5, 1, 3),

     (8, 4, 7, 2, 0),

     (6, 2, 0, 2, 1));

 b.Println(2);

 Println('Массив A');

 var c := new integer[5, 5];

 var (upper, lower) := (0, a.RowCount - 1);

 for var i := 0 to a.RowCount - 1 do

 begin

   var found := False;

   for var j := 0 to b.RowCount - 1 do

     if a.Row(i).SequenceEqual(b.Row(j)) then

     begin

       c.SetRow(upper, a.Row(i));

       upper += 1;

       Found := True;

       break

     end;

   if not found then  

   begin

     c.SetRow(lower, a.Row(i));

     lower -= 1;

   end

 end;

 a := Copy(c);

 c := nil; // устраняем с

 a.Println(2)

end.

Злата Кальченко
Если загрузить программку и в исходнике подводить мышку к непонятным словам, будут всплывать подсказки на российском языке и все станет совершенно понятно.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт