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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.08.2009, 14:09   #1
Stas9n
Новичок
Джуниор
 
Регистрация: 06.08.2009
Сообщений: 2
По умолчанию Матрица в Паскале

Люди, которые разбираются в паскале, помогите написать программу, а то горю...
Условие: Разработать алгоритм и программу для формирования матрицы произвольной размерности n по заданному закону:
13 14 15 16 17
12 3 4 5 18
11 2 1 6 19
10 9 8 7 20
25 24 23 22 21
Stas9n вне форума Ответить с цитированием
Старый 06.08.2009, 15:27   #2
meravingin
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 17
По умолчанию

алгоритм же проще простого отцентра по часовой стрелке происходи нарастание +1 к предыдущему значению
meravingin вне форума Ответить с цитированием
Старый 06.08.2009, 15:32   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Если конкретно для этого условия.
Код:
uses crt;
const n=5;
var a:array[1..5,1..5]of byte;
    x,y,k,z:integer;
begin
clrscr;
x:=n div 2+1;y:=n div 2+1;{начало пути}
k:=0;{счетчик поворотов}
for z:=1 to n*n do
  begin
   a[x,y]:=z;{очередное число 1,2,3...25}
   case k mod 4 of
   0:begin
     dec(y);{влево}
     if (n-x)=y then inc(k);{поворот}
     end;
   1:begin
     dec(x);{вверх}
     if(x)=y then inc(k);{поворот}
     end;
   2:begin
     inc(y);{вправо}
     if(n-x+1)=(y) then inc (k);{поворот}
     end;
   3:begin
     inc(x);{вниз}
     if y=(x) then inc(k);{поворот}
     end;
   end;
  end;
for x:=1 to n do
  begin
    for y:=1 to n do
    write(a[x,y]:4);
    writeln;
  end;
readln
end.
puporev вне форума Ответить с цитированием
Старый 06.08.2009, 18:57   #4
Stas9n
Новичок
Джуниор
 
Регистрация: 06.08.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Если конкретно для этого условия.
Код:
uses crt;
const n=5;
var a:array[1..5,1..5]of byte;
    x,y,k,z:integer;
begin
clrscr;
x:=n div 2+1;y:=n div 2+1;{начало пути}
k:=0;{счетчик поворотов}
for z:=1 to n*n do
  begin
   a[x,y]:=z;{очередное число 1,2,3...25}
   case k mod 4 of
   0:begin
     dec(y);{влево}
     if (n-x)=y then inc(k);{поворот}
     end;
   1:begin
     dec(x);{вверх}
     if(x)=y then inc(k);{поворот}
     end;
   2:begin
     inc(y);{вправо}
     if(n-x+1)=(y) then inc (k);{поворот}
     end;
   3:begin
     inc(x);{вниз}
     if y=(x) then inc(k);{поворот}
     end;
   end;
  end;
for x:=1 to n do
  begin
    for y:=1 to n do
    write(a[x,y]:4);
    writeln;
  end;
readln
end.
Почему то экран весь темный и ничего не выводит... Хотя прога запускается!
Stas9n вне форума Ответить с цитированием
Старый 06.08.2009, 19:21   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Понятия не имею, у меня работает.

Вот программа в Турбо Паскале 7.0
Вложения
Тип файла: rar SP_NBL_5.rar (350 байт, 6 просмотров)

Последний раз редактировалось Stilet; 07.08.2009 в 08:54.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица в паскале GaJIbI4 Паскаль, Turbo Pascal, PascalABC.NET 12 02.06.2010 10:07
Матрица в паскале Алeксандр Паскаль, Turbo Pascal, PascalABC.NET 1 21.01.2009 18:22
задача на паскале - Матрица,2-х мерный массив vdv08 Помощь студентам 15 22.09.2008 14:48
задача на паскале - Матрица,2-х мерный массив vdv08 Помощь студентам 1 14.09.2008 12:45
МАТРИЦА В ПАСКАЛЕ евгения, Помощь студентам 4 31.05.2007 19:32