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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 00:14   #1
kat297
Пользователь
 
Регистрация: 01.06.2010
Сообщений: 18
Смущение Delphi Множества

Дана матрица А размерностью [NxN] элементов целого типа из диапазона от 0 до 255. Не используя вспомогательных массивов и не изменяя порядка элементов матрицы А установите, можно ли граничными элементами матрицы заполнить внутреннюю её часть: граничные элементы при заполнении могут использоваться неоднократно


Дана матрица А размерностью [NxN] элементов целого типа из диапазона от -127 до 127. Не используя вспомогательных массивов и не изменяя порядка элементов матрицы А вывести в порядке убывания все различные элементы матрицы, встречающиеся в главной и побочной диагоналях матрицы
kat297 вне форума Ответить с цитированием
Старый 22.10.2010, 10:02   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

первую задачу я не понял вообще, что значит - можно ли заполнить внутреннюю часть?! Да, можно. Всегда! В любом случае! Ведь условий, ограничивающих заполнениние - нет!!

а вторая задачка специально заточена под множества.
Решается примерно так:
Код:
const N = 10;
type MyShortInt = 0..254;
var
  i, j, k : integer;
  A : array[1..N,1..N] of ShortInt;
  s : MyShortInt;
  Diagonal : set of MyShortInt;
begin
  Randomize;
  WriteLn;
  for i:=1 to N do begin
    for j:=1 to N do begin
      k := Random(254);
      k := k - 127;
      A[i,j] := k;
      Write(A[i,j]:6);
    end;
    WriteLn;
  end;

  Diagonal := [];

  {по главной диагонали прошлись}
  for i:=1 to N do Include(Diagonal, A[i,i]+127 );


  {по побочной диагонали прошлись}
  for i:=1 to N do Include(Diagonal, A[i,N-i+1]+127);


  {вывод результатов (в убывающем порядке) }
  WriteLn;
  WriteLn('Результат: ');
  for s := 254 downto 0 do
     if s in Diagonal then Write((s-127):5);

  readln;
  

end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2010, 12:49   #3
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Возможно, имеется ввиду, что граничные элементы внутри встречаться не должны...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 22.10.2010, 13:26   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Возможно, имеется ввиду, что граничные элементы внутри встречаться не должны...
да, может быть. Но, если я правильно понимаю, об этом должно быть сказано в задании...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2010, 17:41   #5
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

Вместо MyShortint можно стандартный Byte использовать, разнца в одно число...
Kingdom_Reborn вне форума Ответить с цитированием
Старый 22.10.2010, 19:57   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Вместо MyShortint можно стандартный Byte использовать, разнца в одно число...
угу. вполне
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.10.2010, 20:36   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Да, можно. Всегда! В любом случае!
Да ладно? Не всегда можно
Если длина периметра более чем площадь внутренних ячеек то нельзя.
Другое дело что автор не указала что с периметра нельзя переносить разные ячейки в одни и те же внутринние , а так мона проверить.
Код:
 var x,n,m:integer;
begin
 n:=3;
 m:=3;
 x:=n*m-2*n-2*n-4;
 write(x>(n*m));
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Вот вроде не ошибаюсь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2010, 11:05   #8
kat297
Пользователь
 
Регистрация: 01.06.2010
Сообщений: 18
По умолчанию

Ммм... Как я поняла, то если множество внутренних элементов включено во множество граничных элементов...
kat297 вне форума Ответить с цитированием
Старый 23.10.2010, 11:39   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Как я поняла, то если множество внутренних элементов включено во множество граничных элементов...
К сожалению, это пустые разговоры...
давайте так. Вы задание поняли?
Приведите два конкретных примера маленьких матриц - один случай, когда можно граничными заполнить внутренние,
второй — когда нельзя. поясните почему. тогда можно будет и с решением что подсказать.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2010, 17:27   #10
kat297
Пользователь
 
Регистрация: 01.06.2010
Сообщений: 18
По умолчанию

1234
5596
7568
9637
Вот, как я понимаю, в этом случае это возможно, т.к. внутренняя часть заполнена элементами {5,6,9} (которые, как указано в задании (граничные элементы при заполнении могут использоваться неоднократно) могут повторятся, например эл-т 5 (у меня их 2)) и {5,6,9}включено в{1,2,3,4,5,6,7,8,9}

1234
5596
7568
3637
А тут не может, т.к. в множестве граничных элементов нет внутреннего элемента 9

Кажется так...
kat297 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множества в Delphi 0LMER Помощь студентам 0 18.09.2010 15:28
Множества в DELPHI _LeO_ Общие вопросы Delphi 6 21.06.2010 20:15
Множества Antonio_getscool Помощь студентам 1 11.03.2010 12:43
Множества Delphi VadEr Помощь студентам 10 25.10.2009 14:57
Задача на вектора (тема Множества) DELPHI 08ekhiv1 Помощь студентам 1 13.03.2009 20:00