IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Тест на логику (олимпиадные задачи)
___ALex___
сообщение 12.01.2003 17:03
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 282

Репутация: -  0  +


Народ, предложите своё решение...

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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Ivs
сообщение 12.01.2003 21:45
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 209

Репутация: -  0  +


Спираль:

Код
program Spiral;
uses crt;
const h=6;
var
  a:array[1..h,1..h] of integer;
  i,j,n,k,b,z,m:integer;
begin
  ClrScr;
  n:=h;
  m:=1;
  z:=n;
  k:=1;
  i:=1;j:=1;
  for b:=1 to z*z do
  begin
     for j:=m to n do
     begin
        a[i,j]:=k;
        k:=k+1;
     end;
     k:=k-1;
     for i:=m to n do
     begin
        a[i,j]:=k;
        k:=k+1;
     end;
     k:=k-1;
     for j:=n downto m do
     begin
        a[i,j]:=k;
        k:=k+1;
     end;
     k:=k-1;
     m:=m+1;
     for i:=n downto m do
     begin
        a[i,j]:=k;
        k:=k+1;
     end;
     n:=n-1;
  end;
  for i:=1 to z do
     begin
     for j:=1 to z do write(a[i,j]:5);
     writeln;
  end;
  readln;
end.


Добавлено (12.01.03 21:12):

Перестановка:
Код
const n=10;
var
  i,j,x,m:integer;
  a:array[1..n] of integer;
begin
  ClrScr;
  Randomize;
  for i:=1 to n do
  begin
     a[i]:=random(9)+1;
     write(a[i]:3);
  end;
  writeln;
  write('input m-> ');readln(m);
  for i:=1 to m do
  begin
     x:=a[1];
     for j:=1 to n-1 do a[j]:=a[j+1];
     a[n]:=x;
  end;
  for i:=1 to n do write(a[i]:3);
  readln;
end.


--------------------
Если вы хотите чаще встречаться с понравившейся девушкой установите ей Windows'95
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 7:22
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"