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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2008, 21:31   #1
Forro
Пользователь
 
Регистрация: 08.01.2008
Сообщений: 15
Печаль матрици

Я на гране нервного срыва - второй день сижу над задачей - ничего в голову не лезит, не знаю как решать.
Получить квадратную матрицу порядка n:
11...11
1...1
..
0 . 0
..
1...1
11...11
Forro вне форума Ответить с цитированием
Старый 13.04.2008, 21:43   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Квадратная матрица порядка n - это матрица с количеством строк и столбцов = n. Что это за рисуночек ?

Откуда получить ? Заполнить ? Тогда должны быть описаны правила заполнения.

Последний раз редактировалось alexBlack; 13.04.2008 в 21:56.
alexBlack вне форума Ответить с цитированием
Старый 14.04.2008, 15:39   #3
Forro
Пользователь
 
Регистрация: 08.01.2008
Сообщений: 15
По умолчанию

Это то что должно получиться в матрице - например матрица 5-го порядка =( тока как это в паскале я не в курсах, каждый эл-т вручную??? но порядок ведь величина измеряемая...

1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
Forro вне форума Ответить с цитированием
Старый 14.04.2008, 16:20   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вот так можно:

Код:
var M:array[1..100, 1..100] of integer;

procedure fillMatrix(N:integer);
var k, i, j, c :integer;
begin
   k := N div 2;
   if N mod 2 > 0 then inc(k);
    
   c := 0; // отступ
   for i:=1 to N do begin

      for j := 1 to N do begin
         if (j <= c) or (j >= N-c+1)
         then M[i, j] := 0
         else M[i, j] := 1;
      end;

      if i < k then inc(c)
      else
         if (i > k) or (N mod 2 > 0) then dec(c);
   end;
end;

begin
    N := 5;
    fillMatrix(N);
    ...
alexBlack вне форума Ответить с цитированием
Старый 14.04.2008, 16:30   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Можно немного короче.
Код:
uses crt;
var a:array[1..20,1..20]of byte;
    n,i,j:byte;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
  begin
    for j:=1 to n do
       begin
         if((j>=i)and(j<=n-i+1))
         or((j<=i)and(j>=n-i+1))
         then    a[i,j]:=1
         else a[i,j]:=0;
         write(a[i,j],' ');
      end;
    writeln;
  end;
readln
end.
puporev вне форума Ответить с цитированием
Старый 14.04.2008, 20:31   #6
Forro
Пользователь
 
Регистрация: 08.01.2008
Сообщений: 15
Смущение

БольФое Пасибо, вообще плохо знаю эту часть паскаля =(
Forro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal. Матрици. ProPaL Помощь студентам 9 10.02.2008 01:13