![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
___ALex___ |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
Народ, предложите своё решение...
1. Составить алгоритм заполнения прямоугольной таблицы размером N*N целыми числами от 1 до N*N по спирали. Пример для N=5. Цитата 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9 2. Переставить две части массива А из n элементов, первая часть - элементы с номерами от 1 до m, вторая - от m+1 до n. При этом порядок элементов в каждой из частей должен быть сохранен и нельзя использовать дополнительные массивы. Пример. n=9, m=5 Вход: 9 4 7 2 3 5 8 1 6 Выход: 5 8 1 6 9 4 7 2 3 |
![]() ![]() |
Some1 |
![]()
Сообщение
#2
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 38 Репутация: ![]() ![]() ![]() |
А вот ещё интересное решение спирали:
Для тех, кто не любит циклы for :))))) Код uses crt; var x1,y1,x2,y2,x,y:byte; a:array[1..100,1..100] of integer; val,dx,dy:integer; n:byte; begin clrscr; write('Введите N:'); readln(n); x1:=1; y1:=1; x2:=n; y2:=n; val:=1; dx:=1; dy:=0; x:=1; y:=1; repeat a[x,y]:=val; inc(val); if not(x+dx in [x1..x2]) then begin dx:=0; dy:=byte(x=x2)-byte(x=x1); dec(x2,byte(x=x1)); inc(x1,byte((x=x2)and(x<>n))); end; if not(y+dy in [y1..y2]) then begin dy:=0; dx:=byte(y=y1)-byte(y=y2); dec(y2,byte(y=y1)); inc(y1,byte(y=y2)); end; x:=x+dx; y:=y+dy; until (x1>=x2)and(y1>=y2); for y:=1 to n do begin for x:=1 to n do write(a[x,y]:3); writeln; end; end. Получилось не очень компактно, но я думаю, как это оптимизировать :) тю.. чё это у вас с тегом code?.. чего он пробелы убивает (если их много)? А вот когда я отредактировал (ну вписал это) то всё встало на свои места.. глюкисы.. :< |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 7:22 |