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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2012, 18:55   #1
Иварунька
Пользователь
 
Регистрация: 30.09.2012
Сообщений: 12
По умолчанию Заполнение двухмерного масиива

Привет!
Итак задача в том чтоб заполнить массив определённым образом. Массив 10 на 10, в первой строке заполнено элементы от 2 до 9(включительно), во второй от 3 до 8(включительно),в третий от 4 до 7(включительно), а дальше только 5 и 6 элемент строки. Примет ниже(надеюсь после публикации расстановка не собьётся в кучу.) Успешно накодил верх программы дойдя до 4 строки и там вошёл в ступор, ибо дальше, последующие 6 строчек должно заполняться только 5 и 6 столбец.
Пасибо всем кто вникнет.
Код:

 program massiv2;
 uses crt;
 const   num=10;
 var
    oper,

    i,j :   integer;
    wrk: integer ;
    ms: array[1..num, 1..num] of integer;
 begin
   for i:=1 to num do
   for j:=1 to num do
      ms[i,j]:=0;
   wrk:=1;



                                             { .   1  2  3  4  5 6 7 8 . }
   for i:=1 to 10 do                      { . . 9 10 11 12 13 14 . . }
     begin                                   { . . . 15 16 17 18 . . . }
    j:=1+i; if j>4 then j:=5;            { . . . . 19 20 . . . . }
    while(j <= 10-i) do                   { . . . . 21 22 . . . . }
      begin                                   { . . . . 23 24 . . . . }
        ms[i,j]:=wrk;                       { . . . . 25 26 . . . . }
        wrk:=wrk+1;                       { . . . . 27 28 . . . . }
                                                { . . . . 29 30 . . . . }
                                                { . . . . 31 32 . . . . }

         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.
Иварунька вне форума Ответить с цитированием
Старый 16.11.2012, 20:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Например:
Код:
program massiv2;

uses
  crt;

const
  num = 10;

var
  i, j, left, right: integer;
  wrk: integer;
  ms: array[1..num, 1..num] of integer;

begin
  for i := 1 to num do
    for j := 1 to num do
      ms[i, j] := 0;
  wrk := 1;
  left := 1;
  right := num;
  for i := 1 to num do                     
  begin
    if left < right + num mod 2 - 1 then //такая проверка, чтобы и матрицы нечетного размера заполнялись
    begin
      dec(right);
      inc(left);
    end;
    for j := left to right do
    begin
      ms[i, j] := wrk;
      inc(wrk);
    end;
  end;
  for i := 1 to num do
  begin
    for j := 1 to num do
      write( ms[i, j]:7);
    writeln;
  end;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 16.11.2012 в 20:10.
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемешивание двухмерного массива stenl1 Общие вопросы C/C++ 10 22.11.2016 06:26
Описание двухмерного массива в константе O m n i s Паскаль, Turbo Pascal, PascalABC.NET 1 25.01.2012 19:15
Заполнение двухмерного массива _PrizraK_ Общие вопросы Delphi 1 01.05.2011 14:23
Передача двухмерного массива в функцию tem_80 Общие вопросы C/C++ 3 18.02.2011 23:47
Сортировка вставками двухмерного массива ponchikpk Помощь студентам 6 09.03.2009 13:34