Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 13.04.2013
Сообщений: 34

Упорядочить те строки матриц, сумма которых есть в другом массиве

12.11.2013, 00:40. Показов 615. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Даны целочисленная матрица Q и целочисленный массив Z. Упорядочить по убыванию те строки матрицы Q, сумма элементов которых совпадает с одним из элементов массива Z.
Нужно использовать алгоритмы с досрочным выходом из цикла.
У меня получилось сделать так, что если программа находит элемент в массиве равный сумме какой-то строке в матрице, то она сортирует всю матрицу, а надо только строчки, сумма которых есть в другом массиве.
Думаю, тут совсем немного допилить, но опыта мне не хватает.
Поможете?

Вот мой код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
const
  Lmax = 20;// Максимальная длинна массива
 
var
  i, j, l, c, p, a, b: integer; // Счётчики
  n, m: integer; // Строчки и столбики
  k: integer; // Длина массива Z
  sumel: integer; // Сумма элементов
  temp: integer; // Временная переменная для сортировки
  Q: array[1..Lmax, 1..Lmax] of integer;
  Z: array[1..Lmax] of integer;
  flag: boolean;
 
begin
  {Вввод необходимых данных}
  repeat
    write('Пожалуйста, введите ко-во строчек в матрице Q ∈ [1;', Lmax, ']: ');
    readln(n);
  until (n >= 1) and (n <= Lmax);
  repeat
    write('Пожалуйста, введите ко-во столбцов в матрице Q ∈ [1;', Lmax, ']: ');
    readln(m);
  until (m >= 1) and (m <= Lmax);
  writeln('Теперь, пожалуйста, введите саму матрицу Q: ');
  for i := 1 to n do 
    for j := 1 to m do 
    begin
      write('Q[', i, ',', j, '] > ');
      read(Q[i, j]);
    end;
  {Показ матрицы до сортировки}
  writeln('Матрица до сортировки: ');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(Q[i, j]:3);
    writeln;
  end;
  repeat
    write('Пожалуйста, введите длину массива Z ∈ [1;20]: ');
    readln(k);
  until (k >= 1) and (k <= Lmax);
  for i := 1 to k do
  begin
    write('Z[', i, '] > ');
    read(Z[i]);
  end;
  {Проверка Q[n,m]=Z[k]}
  sumel := 0;
  a := 1;
  flag := false;
  for i := 1 to n do
  begin
    for j := 1 to m do
      sumel := sumel + Q[i, j];
    while (a <= k) and (not flag) do
      if sumel = Z[a] then 
      begin
        flag := true;
        b := n; // Запоминаем строчку, сумма которой равна элементу массива
      end
      else inc(a);
    //end;
    writeln(flag);
    if flag then
    begin
      for c := 1 to m - 1 do
        for p := c + 1 to m do
          if Q[b, c] < Q[b, p] then
          begin
            temp := Q[b, c];
            Q[b, c] := Q[b, p];
            Q[b, p] := temp;
          end;
    end; end;
  {Вывод на экран рез-тов}
  if flag = false then writeln('Нет сорртировки')
  else
    writeln('Матрица после сортировки:  ');
  for i := 1 to n do
  begin
    for j := 1 to m do
      write(Q[i, j]:3);
    writeln;
  end;   
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.11.2013, 00:40
Ответы с готовыми решениями:

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

В массиве найти два элемента, стоящих друг за другом, сумма которых больше максимального числа
В массиве D найти, есть ли два элемента, стоящих друг за другом, сумма которых больше максимального числа (максимальное значение массива...

Узнать, есть ли в матрице строки, сумма элементов которых есть отрицательное число
составьте программу, выясняющую есть ли в двумерном массиве A(N,M) строки, сумма элементов которых есть отрицательное число

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33405 / 21515 / 8236
Регистрация: 22.10.2011
Сообщений: 36,916
Записей в блоге: 12
12.11.2013, 11:37
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
  {Проверка Q[n,m]=Z[k]}
  for i := 1 to n do
  begin
    sumel := 0; // Эти 3 действия надо производить заново для каждой строки Q, поэтому вносим в цикл
    a := 1;
    flag := false;
 
    for j := 1 to m do
      sumel := sumel + Q[i, j];
    while (a <= k) and (not flag) do
      if sumel = Z[a] then 
      begin
        flag := true;
        b := i; // Запоминаем СТРОЧКУ, поэтому не n, а i, хотя этого можно было и не делать
      end
      else inc(a);
    //end;
    writeln(flag);
    if flag then
    begin
      for c := 1 to m - 1 do
        for p := c + 1 to m do
          // вот в этом цикле, вместо Q[b, ...] можно было использовать Q[i, ...],
          // потому что все равно, если Flag = False, сюда выполнение не приходит
          if Q[b, c] < Q[b, p] then 
          begin
            temp := Q[b, c];
            Q[b, c] := Q[b, p];
            Q[b, p] := temp;
          end;
    end; end;
  {Вывод на экран рез-тов} 
 
  // Твой вариант вывода не будет работать, поскольку Flag меняется для каждой строки, 
  // вводи глобальный флажок, который при первом же изменении Flag-а перебросится в True
 
  if not Global_Flag then writeln('Нет сортировки')
  else
    writeln('Матрица после сортировки:  ');
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.11.2013, 11:37
Помогаю со студенческими работами здесь

Упорядочить те строки матрицы, в которых есть элемент другого массива
Здравствуйте. У меня есть задание: Пробовал сделать, но на выходе у меня матрица не сортируется, хотя условие выполняется... ...

Определить, есть ли в этом массиве три числа, сумма которых равна нулю
Дан массив из N целых чисел а1, а2...an. Вам нужно проверить, есть ли в этом массиве три числа сумма которых равна нулю. В ответе нужно...

Функция проверяющая есть ли в массиве пара элементов сумма которых равна элементу между ними
Здравствуйте ! Хотелось бы проверить здесь код одной функции, который я написал. Необходимо выяснить есть ли в массиве пара элементов...

Найти в массиве две строки, сумма элементов которых максимальна и минимальна
Доброго времени суток. Ребята помогите мне пожалуйста!!! 1.Нужно найти в массиве две строки, сумма элементов которых максимальна и...

В двумерном массиве A[N][M] поменять местами строки,в которых сумма элементов максимальна и минимальна.
Помогите пожалуйста..


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru