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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 11:41   #1
mishanya6
Пользователь
 
Регистрация: 04.11.2011
Сообщений: 10
Сообщение Множества

помогите сделать лабу please!!!

Дана матрица А размерностью [N х N] элементов целого типа из диапазона от -127 до 127. Не используя вспомогательных массивов и не изменяя порядка следования элементов в матрице А определите, где различных элементов в матрице больше: под главной диагональю матрицы, или же над ней, и выведите на экран различные элементы найденной части матрицы в порядке их возрастания.
mishanya6 вне форума Ответить с цитированием
Старый 10.11.2011, 12:06   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Заводишь два множества: above и under - и очищаешь их.
Проходишь по области матрицы над ГД и делаешь include(above,a[i]).
Потом то же самое с нижней областью и множеством under.
Количество элементов каждого множества считаешь, проходя в цикле по всем элементам и смотря, нажодится ли текущий в множестве (операция in).
Сравниваешь полученные числа (мощности) и определяешь, в каком множестве больше элементов.
Вывод точно так же, только вместо плюсования счетчика оператор write.
Все, вроде.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Старый 10.11.2011, 13:31   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
и делаешь include(above,a[i]).
только напрямую так не получится (множества в Паскаль могут быть от нуля до 255)

поэтому надо сдвигать все числа на +127: include(above, a[i] + 127);

в данном случае это будет выглядеть так:
Код:
var i,j, 
      kAbove, kUnder  : integer;
    above, under : set of byte;
begin
  above := [];
  under := [];
  for i:=1 to n do
    for j:=1 to n do
      if i<j then Include(above, A[i,j]+127)
      else
        if i>j then Include(under, A[i,j]+127);

  
  {подсчитать мощность множества}
   kAbove := 0;
   kUnder := 0;
   for i:=0 to 255 do begin
     if i in Above then Inc(kAbove);
     if i in Under then Inc(kUnder);
   end;

   WriteLn('всего различных элементов НАД главной диагональю: ', kAbove);
   WriteLn('всего различных элементов ПОД главной диагональю: ', kUnder);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Через множества заданы сорта роз,выращиваемых цветоводами. Ввод множества с клавиатуры,сравнение множеств BAMbarBIO Паскаль, Turbo Pascal, PascalABC.NET 5 31.05.2011 13:17
Множества Ilya_L Microsoft Office Excel 3 21.06.2010 00:52
Множества surf135 Помощь студентам 5 11.06.2010 11:57
Множества Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:50
Множества Asira Помощь студентам 0 12.12.2009 18:34