Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Массивы


Автор: Neo007 24.4.2006, 21:12
Постоянно мучаюсь с массивами....
обьясните кто нибудь как с ними совладать. Каждый раз даються в заданиях двумерные массивы с множеством циклов, смотря на эту путаницу цифр просто пугаюсь и закрываю книгу...
Обьясните как легче высчитывать большие цепи цыклов в массивах.
Вот например: 
Код

program massiv2;
 const   num=10; var i,j,k : integer;
 ms: array[1..num, 1..num] of integer;
 begin
     i:=1;
   repeat
     for j:=1 to num do
          ms[i,j]:=0;
   i:=i+1
   until i>num;
   k:=1;
   for i:=1 to 7 do
     begin
    j:=4-i; if j<1 then j:=1;
   while(j <= 6-i) do
      begin  ms[i,j]:=k; k:=k+1; j:=j+1; end;
    j:=5+i;
   while((j <= 7+i) and (j<=num)) do
      begin  ms[i,j]:=k; k:=k+1; j:=j+1  end;
     end;
   for i:=1 to num do
     begin writeln;
           for j:=1 to num do write( ms[i,j]:7)
     end;
    end.

Как разобраться в этой путанице? с чего лучше всего начать? 
И ведь ещё надо учесть по чему выравниваеться массив по строчкам или столбцам...
 

Автор: volvo877 24.4.2006, 21:48
Цитата(Neo007 @  24.4.2006,  20:12 Найти цитируемый пост)
с чего лучше всего начать? 
С форматирования кода... Сравни тот код, что был у тебя с этим (заметь, КОД один и тот же):

Код

program massiv2;
const
  num=10;

var
  i, j, k: integer;
  ms: array[1 .. num, 1 .. num] of integer;

begin
  i:=1;
  repeat

      for j:=1 to num do ms[i, j]:=0;
      i:=i+1

  until i>num;

  k:=1;
  for i:=1 to 7 do begin

      j:=4 - i;
      if j<1 then j := 1;
      while(j <= 6-i) do begin
          ms[i,j]:=k; k:=k+1; j:=j+1;
      end;

      j:=5+i;
      while((j <= 7+i) and (j<=num)) do begin
          ms[i,j]:=k; k:=k+1; j:=j+1
      end;

  end;

  for i:=1 to num do begin
      writeln;
      for j:=1 to num do write( ms[i,j]:7)
  end;

end.
Чувствуешь разницу? Структура программы должна просматриваться, а не каша... Иначе программа будет просто нечитабельна (по крайней мере для новичка).

P.S. Смысла использования в первом цикле Repeat ... Until я не понял. Зачем? Чтобы усложнить программу? Можно же обойтись обычным For-ом... 

Автор: TatyanaQueen 15.5.2006, 21:43
Что должно получиться в итоге и есть ли ошибки?
Type a=array[1..3] of real
var b:a
c: array [1..3] of a
d: array [1..5]
c [5,3]
c [3,5]
d [1]:=b[1]
Помогите SOS 

Автор: Rondo 15.5.2006, 21:52
Код

type 
  a=array[1..3] of real
var 
  b:a
  c: array [1..3] of a
  d: array [1..5]


а это что? 
Код

  c [5,3]
  c [3,5]
  d [1]:=b[1]
 

Автор: MacTep 16.5.2006, 07:55
Цитата(TatyanaQueen @  15.5.2006,  21:43 Найти цитируемый пост)
Type a=array[1..3] of real
var b:a
c: array [1..3] of a
d: array [1..5]
c [5,3]
c [3,5]
d [1]:=b[1]

А вот всем этом деле вообще точки с запятыми не ставятся??? Если нет, то это ошибка. Это раз. А два - последние три строчки тоже не понимаю. 

Автор: Palladin 26.6.2006, 21:02
ну, поидеи, индекс через запятую smile а где автор вообще smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)