Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Derzky
0 / 0 / 0
Регистрация: 01.12.2015
Сообщений: 120
#1

Массив: Змейка, Спираль

01.12.2015, 14:43. Просмотров 844. Ответов 1
Метки нет (Все метки)

Доброго времени суток! Я на форуме первый день, прошу не судить строго. Я знаю, что похожие темы есть на форуме, я перечитал их всех, но правильного решения на эти задачи не нашел. #Free Pascal
Помогите решить эти задачки:

1.Дано число n. Создайте массив A[2*n+1][2*n+1] и заполните его по спирали, начиная с числа 0 в центральной клетке A[n+1][n+1]. Спираль выходит вверх, далее закручивается против часовой стрелки.
Входные данные
Программа получает на вход одно число n.

Выходные данные

Программа должна вывести полученный массив, отводя на вывод каждого числа ровно 3 символа.

Примеры
входные данные
2
выходные данные
12 11 10 9 24
13 2 1 8 23
14 3 0 7 22
15 4 5 6 21
16 17 18 19 20


2.Требуется заполнить массив размера N × N единичками по спирали (начиная с верхнего левого угла по часовой стрелке, см. пример).

Входные данные
С клавиатуры вводится число N (нечетное, натуральное и не превышающее 50).

Выходные данные
Требуется вывести на экран построенную спираль.

Примеры
входные данные
7
выходные данные
1111111
0000001
1111101
1000101
1011101
1000001
1111111

Добавлено через 30 минут

Добавлено через 8 минут
3.Даны числа n и m. Создайте массив A[n][m] и заполните его, как показано на примере.
Входные данные
Программа получает на вход два числа n и m.

Выходные данные
Программа должна вывести полученный массив.

Примеры
входные данные
4 10
выходные данные
0 1 3 6 10 14 18 22 26 30
2 4 7 11 15 19 23 27 31 34
5 8 12 16 20 24 28 32 35 37
9 13 17 21 25 29 33 36 38 39
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2015, 14:43
Ответы с готовыми решениями:

Спираль
Начертить фигуру.Фигура состоит из четырех спиралей, заключенных в окружность...

Матрицы, спираль.
Вот задание: Заполнить матрицу ЛП, от центра по спирали: вниз - влево - вверх -...

Спираль из матриц
Добрый день. Помогите по-проще написать спираль из матриц. То есть дана...

Z-видная спираль
Получить изображение на всю высоту экрана. Ширина "полочки" каждого Z-образного...

Архимедова спираль
1) Архимедова спираль определяется следующим уравнением в полярных координатх:...

1
Puporev
Модератор
54361 / 41950 / 28980
Регистрация: 18.05.2008
Сообщений: 98,816
01.12.2015, 15:32 #2
Лучший ответ Сообщение было отмечено erl27 как решение

Решение

Программы написаны не для проверочного сайта, а для себя.
1.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
uses crt;
var a:array[1..9,1..9]of byte;//раз по 3 символа под число, значит максимально
    n,m,x,y,k,z:integer;      //числа двухзначные, до 81
begin
clrscr;
repeat
write('Введите n от 1 до 4 n=');
readln(n);
until n in [1..4];
m:=2*n+1;
x:=n+1;
y:=n+1;
k:=0;
for z:=1 to m*m do
 begin
  a[x,y]:=z-1;
  case k mod 4 of
  0:begin
    dec(x); //вверх
    if m-x=y then inc(k);//поворот
    end;
  1:begin
    dec(y);//влево
    if x=y then inc(k);//поворот
    end;
  2:begin
    inc(x);//вниз
    if m-x+1=y then inc (k);//поворот
    end;
  3:begin
    inc(y); //вправо
    if y=x then inc(k);//поворот
    end;
  end;
 end;
for x:=1 to m do
  begin
    for y:=1 to m do
    write(a[x,y]:3);
    writeln;
  end;
readln
end.
Добавлено через 17 минут
2.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses crt;
const nmax=50;
var a:array[1..nmax,1..nmax] of integer;
    m,n,i,j,k,x,y:integer;
begin
clrscr;
randomize;
repeat
writeln('Введите размеры матрицы m,n m*n<100');
readln(m,n);
until m*n<100;//двухзначные числа
k:=-1;//число в ячейке
for j:=1 to n do//заполним диагонали до правого верхнего угла
 begin
  y:=1; //начало диагонали вверху
  x:=j;
  while(x>0) and(y<=m) do//пока не левый и не нижний края
   begin
    k:=k+1;
    a[y,x]:=k;
    x:=x-1;//идем влево вниз
    y:=y+1;
   end;
 end;
for j:=2 to m do//диагонали ниже
 begin
  y:=j; //начало у правого края
  x:=n;
  while(x>0)and(y<=m) do
   begin
    k:=k+1;
    a[y,x]:=k;
    x:=x-1;
    y:=y+1
   end;
 end;
for i:=1 to m do
 begin
  for j:=1 to n do
  write(a[i,j]:4);
  writeln
 end;
readln
end.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2015, 15:32

Изобразить спираль Архимеда
Задача звучит немного иначе, чем название темы, но в этом и есть проблема....

Заполнить спираль единицами
Как заполнить двумерный массив по спирали - это уже давно известно. Но как...

Спираль из нижнего правого -вверх
Помогите написать матрицу, не пойму как это сделать.:( Нужно сгенерировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru