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

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

Linka 29.01.2010 17:39

Заполнение массива
 
Нужно составить программу, которая заполнила бы в двумерный массив так же как на картинке снизу. Такими же значениями.

Но для непосредственного заполнения массива нельзя использовать операторы присвоения, которые не находятся в теле цикла.

Ссылка удалена

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

Код:


program massiv2;
 const  num=10;  {razmer massiva}
 var  i,j :  integer;    {indeksi }
    wrk: integer ;
    ms: array[1..num, 1..num] of integer;{massiv, kotorij obrabativaem}
begin
for i:=1 to num do
  for j:=1 to num do
      ms[i,j]:=0;
  wrk:=1;                                  { . . . 1 2 3 . . . . }
  for i:=1 to 6 do {cikl po strokam}      { . . 4 5 6 . . . . . }
    begin                                  { . 7 8 9 . . . . . . }
    j:=5-i; if j<1 then j:=1;              {101112 . . . . . . . }
    while(j <= 7-i) do {cikls po kolonnam}  {1314 . . . . . . . . }
      begin                                {15 . . . . . . . . . }
        ms[i,j]:=wrk;                      { . . . . . . . . . . }
        wrk:=wrk+1;                        { . . . . . . . . . . }
                                            { . . . . . . . . . . }
                                            { . . . . . . . . . . }

        j:=j+1
      end;
        end;
  for i:=1 to num do  {Uzgenereta masiva izvads}
    begin writeln;
          for j:=1 to num do
          write( ms[i,j]:7)
    end;
end.

Спасибо заранее большое :>

Vladimir_S 29.01.2010 21:37

Вы уж извините, но я как-то по-своему:
Код:

VAR
 A:ARRAY[1..10,1..10] of BYTE;
 i,j:INTEGER;
BEGIN
 FOR j:=1 TO 5 DO
  begin
  A[j,j]:=j;
  A[j,11-j]:=11-j;
  A[j+1,j]:=j+10;
  A[j+1,11-j]:=21-j;
  end;

 FOR i:=1 TO 10 DO
  begin
  FOR j:=1 TO 10 DO
    begin
    if ((j<6) and (i=j))
    or ((j>5) and (i=11-j))
    or ((j<6) and (i=j+1))
    or ((j>5) and (i=12-j))
    then Write(A[i,j]:5) else
    Write('    ');
    end;
  WriteLn;
  end;
 ReadLn;
END.


Linka 29.01.2010 22:19

Владимир, спасибо!

А как можно сделать, чтобы на месте пустых элементов стояли ноли ?

Vladimir_S 29.01.2010 22:25

Цитата:

Сообщение от Linka (Сообщение 288658)
Владимир, спасибо!

А как можно сделать, чтобы на месте пустых элементов стояли ноли ?

Очень просто: в шестой строке снизу заменить
Код:

Write('    ') на
Write('    0').



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

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