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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 02:06   #1
APA
Новичок
Джуниор
 
Регистрация: 13.12.2010
Сообщений: 1
Восклицание Преобразование одномерного массива в двумерный по правилу

Здравствуйте!
Мне нужно массив одномерный размера [1..20] преобразовать в двумерный [1..5,1..4] по спирали как бы выставив элементы (по часовой стрелке).
Данные выводить в StringGrid.
Вот мой код, но он порит чушь. поправьте и объясните. Заранее благодарен.

Собственно код:
Код:
var
  x: array [1..20] of integer;
  y: array [1..5,1..4] of integer;
  i,j: integer;
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var x:array [1..20] of integer;
    k,a:Integer;
begin
randomize;
for k:=1 to 20 do
  begin
    a:=Random(100);
    x[k]:=a;
end;
for k:=0 to 19 do
begin
StringGrid1.Cells [k,0]:= IntToStr (x[k+1]);
end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var x: array [1..20] of integer;
    y: array [1..5,1..4] of integer;
    a,b,c,d,i,j,k: integer;
begin
a:=4;
b:=5;
c:=1;
d:=2;
i:=1;
j:=0;
k:=1;

while j<a do
  begin
    j:=j+1;
    y[i,j]:=x[k];
    k:=k+1;
  end;;

while i<b do
  begin
    y[i,j]:=x[k];
    i:=i+1;
    k:=k+1;
  end;;

while j>c do
  begin
    y[i,j]:=x[k];
    j:=j-1;
    k:=k+1;
  end;;

while i>d do
  begin
    y[i,j]:=x[k];
    i:=i-1;
    k:=k+1;
  end;;

a:=a-1;
b:=b-1;
c:=c+1;
d:=d+1;

while j<a do
  begin
    y[i,j]:=x[k];
    j:=j+1;
    k:=k+1;
  end;;

while i<b do
  begin
    y[i,j]:=x[k];
    i:=i+1;
    k:=k+1;
  end;;

while j>c do
  begin
    y[i,j]:=x[k];
    j:=j-1;
    k:=k+1;
  end;;

while i>=d do
  begin
    y[i,j]:=x[k];
    i:=i-1;
    k:=k+1;
  end;;
   begin
     for i:=0 to 4 do
     for j:=0 to 3 do
     begin
     StringGrid2.Cells [j,i]:= InttoStr(y[i,j]);
  end;;
  end;

end;
end.

Последний раз редактировалось Stilet; 13.12.2010 в 11:36.
APA вне форума Ответить с цитированием
Старый 13.12.2010, 10:56   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Разбираться в твоем сложно.
Разберись в моем. Он работает.

Код:
program spiral;
var
 Array1 : array[1..10,1..10] of Integer;
 i,j :Integer;
 min,max,N : Integer;
begin
N := 9;
Randomize;
writeln ('Исходная матрица :');
for i := 1 to N do
 begin
 for j := 1 to N do
  begin
  Array1[i,j] := -20 + Random(20-(-20)+1);
  write (Array1[i,j]:4);
  end;
 writeln;
 end;

for i := 1 to N div 2 + 1 do
 begin
 writeln ('Строка : ',i);
 for j:= i to N-i+1 do write ( Array1[i,j],' ' );
 for j:= i+1 to N-i+1 do write (Array1[j,N-i +1 ],' ');
 for j:= N-i downto i do write ( Array1[N-i+1,j],' ');
 for j:= N-i downto i+1 do write ( Array1[j,i],' ' );
 writeln;
 end;

writeln ('программа завершена');
end.
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка одномерного массива imperceptible4462 Помощь студентам 10 07.09.2010 09:35
C# - из одномерного массива -> двумерный Vovan_Super Общие вопросы .NET 2 06.07.2010 19:27
Элементы массива a(n) вычисляется по правилу... om3n Помощь студентам 2 20.06.2010 15:30
Перемножение одномерного массива на двумерный daget Помощь студентам 4 14.12.2009 06:27
перестановка эл. одномерного массива quartzz Общие вопросы C/C++ 19 28.06.2009 17:28