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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 17:40   #1
Polonium_007
Новичок
Джуниор
 
Регистрация: 04.12.2013
Сообщений: 1
По умолчанию Спираль в Паскале.

Помогите пожалуйста.) Уже долгие проблемы с этой программой.

Для нечетного числа N (3<=N<=9) заполнить двумерный массив размерности NxN натуральными числами по спирали, начиная с центра, против часовой стрелки. Обязателен файловый ввод/вывод.
Формат входных данных
Входной файл содержит число N.
Формат выходных данных
Выходной файл должен содержать заполенный массив в виде таблицы с фиксированной шириной столбцов. Файл должен завершаться переводом строки.

Примеры:
Вход
3
Выход
3 2 9
4 1 8
5 6 7
Polonium_007 вне форума Ответить с цитированием
Старый 04.12.2013, 17:53   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Что-то похожее нашел. Лишнее только убрать

Код:

Program name;
uses crt;
var
 a:array[1..50,1..50] of integer;
 i,j,m,n:integer;
 u,v,k,kol,t,x,y,add,dir,f,h:integer;
 b:array[1..2500] of integer;
 p:array[1..2500] of integer;
 g,r,q:integer;

 {fun-ya poiska prostogo 4isla}
function Prostoe(d:longint):boolean;
var e:integer;
 begin
  Prostoe:=true;
  for e:=2 to d div 2 do
  if D mod 2=0 then
   begin
    Prostoe:=false;
    Break;
   end;
 end;

begin
clrScr;

writeln('input razmer matrici: ');
readln(n);
m:=n*n;

g:=1;
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=g;
    g:=g+1;
    writeln;
   end;
 end;

for i:=1 to n do
 begin
  for j:=1 to n do
   write(a[i,j]:3,' ');
  writeln;
 end;


k:=1;
kol:=1;
for i:=1 to n do
 begin
  {writeln;}
   for j:=1 to n do
    begin
     b[k]:=a[i,j];
     k:=k+1;
     kol:=kol+1;
    end;
 end;

writeln;
for i:=1 to kol-1 do
  begin
    for j:=1 to kol-2 do
     begin
      if b[j]<b[j+1] then
       begin
        t:=b[j];
        b[j]:=b[j+1];
        b[j+1]:=t;
       end;
     end;
  end;
  {for j:=1 to m do write (b[j],' ');
  writeln;}

x:=0;
y:=1;
add:=n;
dir:=1;
f:=1;
while add<>0 do
 begin
  i:=0;
  while i<>add do
   begin
     x:=x+dir;
     a[y,x]:=b[f];
     f:=f+1;
     i:=i+1;
   end;
  i:=0;
  add:=add-1;
  while i<>add do
    begin
      y:=y+dir;
      a[y,x]:=b[f];
      f:=f+1;
      i:=i+1;
    end;
  dir:=dir*(-1);
end;

writeln;
{vivod vsego massiva}
for i:=1 to n do
 begin
  for j:=1 to n do
   write(a[i,j]:3,' '); {vivod vsego massiva}
  writeln;
 end;
 {poisk prostogo 4isla}
 q:=1;
 for i:=1 to n do
 begin
  for J:=1 to n do
   begin
    if Prostoe(a[i,j]) then
     q:=q+1;
   end;
 end;
 writeln;
 writeln('kol-wo prostih 4isel= ',q); {vivod kol-va prosogo 4isla}

readln;
end.
Изображения
Тип файла: jpg Безымянный.jpg (33.1 Кб, 112 просмотров)

Последний раз редактировалось ZX Spectrum-128; 04.12.2013 в 17:55.
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спираль в VS Jamguranga Visual C++ 0 27.05.2013 17:39
Спираль архимеда Di-em Общие вопросы Delphi 2 30.01.2012 19:25
Спираль radon228 Помощь студентам 0 16.05.2010 17:08
логарифмическая спираль с++ salmanov Помощь студентам 0 23.06.2009 21:17