Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Два массива (http://www.tehnari.ru/f41/t103120/)

kitkit 23.06.2015 12:53

Два массива
 
объясните, кому не лень
есть 2 массива:
a[1,1,1,1,1,1,1,1,1,1]
b[1,2,3,4]

надо "протянуть" массив b[4] через a[10], чтоб получилось:
0. a[1,1,1,1,1,1,1,1,1,1]
1. а[4,1,1,1,1,1,1,1,1,1]
2. a[3,4,1,1,1,1,1,1,1,1]
3. a[2,3,4,1,1,1,1,1,1,1]
4. a[1,2,3,4,1,1,1,1,1,1]
5. a[1,1,2,3,4,1,1,1,1,1]
6. a[1,1,1,2,3,4,1,1,1,1]
7. a[1,1,1,1,2,3,4,1,1,1]
8. a[1,1,1,1,1,2,3,4,1,1]
9. a[1,1,1,1,1,1,2,3,4,1]
10.a[1,1,1,1,1,1,1,2,3,4]
11.a[1,1,1,1,1,1,1,1,2,3]
12.a[1,1,1,1,1,1,1,1,1,2]
13.a[1,1,1,1,1,1,1,1,1,1]
каждый из шагов (0-13) надо вывести.
мне не надо код писать, просто на мысль натолкните..

p.s. то что это будет несколько циклов (for) я знаю (оч хочется верить, что это так), я не понимаю как сделать, чтоб не вылазить за пределы а[10] в начале и в конце..

p.p.s. язык всё равно какой, мне б суть понять...

спасибо :)

Vladimir_S 23.06.2015 13:01

Забавная задачка.
Ладно, сейчас на обед удаляюсь, а вернусь - покручу. Если не отвлекут на какую-нибудь ерунду: я на работе.

kitkit 23.06.2015 13:10

спс :), буду весьма благодарен :)

Vladimir_S 23.06.2015 14:39

Вложений: 1
Ну вот, в порядке наведения на мысль:
Код:

Const
 a:Array[1..10] of Byte=(1,1,1,1,1,1,1,1,1,1);
 b:Array[1..4] of Byte=(1,2,3,4);

Var
 c:Array[0..13,1..10] of Byte;
 i,j:Integer;

Begin
 for i:=0 to 13 do
  for j:=1 to 10 do c[i,j]:=a[j];
 for i:=0 to 13 do
  for j:=i-3 to i do
  if (j>0) and (j<11) then c[i,j]:=b[4-i+j];
 for i:=0 to 13 do
  begin
  write(i:3,'    ');
  for j:=1 to 10 do write(c[i,j]:3);
  writeln;
  end;
 readln
End.


kitkit 23.06.2015 15:25

ого! огромнейше благодарю, о еще одном массиве я не подумал, а условие (if) мне пока вообще мозг взорвало :) спасибо, буду разбираться

kitkit 23.06.2015 16:11

...а без третьего массива никак нельзя?

Vladimir_S 23.06.2015 16:20

Цитата:

Сообщение от kitkit (Сообщение 1140934)
...а без третьего массива никак нельзя?

Почему же? Можно. Просто оставьте один цикл по j, в нем каждый раз заполняйте массив единицами а потом проводите изменение выбранных элементов в соответствии с алгоритмом. И выводите результат строку за строкой.

kitkit 23.06.2015 17:15

for n:=1 to 10 do a[n]:=1;
for i:=0 to 13 do begin
for j:=i-3 to i do begin
if (j>0) and (j<11) then a[i]:=b[4-i+j];
end;
for n:=1 to 10 do begin write(' ', a[n]); end; readln;
for n:=1 to 10 do a[n]:=1;
end;
..я, наверн, совсем не понял, да? tehno015

kitkit 24.06.2015 00:33

вот я лолка..
вот так:
Код:

for i:=0 to 13 do begin
        for n:=1 to 10 do write (a[n],' '); writeln;
        for n:=1 to 10 do a[n]:=1;
  for j:=i-3 to i do
  if (j>0) and (j<11) then a[j]:=b[4-i+j];
end;

нет.. всё равно что-то коряво...

kitkit 24.06.2015 01:05

теперь не коряво tehno001
Код:

for i:=0 to 13 do begin
  for n:=1 to 10 do a[n]:=1;
  for j:=i-3 to i do
  if (j>0) and (j<11) then a[j]:=b[4-i+j];
  for n:=1 to 10 do write (a[n],' '); writeln;
end;



Часовой пояс GMT +4, время: 22:33.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.