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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.02.2013, 21:54   #1
hottab1
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 23
Восклицание Заполнить двухмерный массив "змейкой"

Здравствуйте, я бы хотел попросить Вам создать программу, которая заполнит элементы массива вот в такой последовательности:
1 3 6 10
2 5 9 13
4 8 12 15
7 11 14 16
hottab1 вне форума
Старый 13.02.2013, 22:03   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Написал только потому, что она уже написана
Код:
var
  a: array [1 .. 100, 1 .. 100] of word;
  i, j, k: word;
  n, m: integer;

function min(a, b: integer): word;
begin
  min := (-abs(a - b) + a + b) div 2;
end;

function max(a, b: integer): word;
begin
  max := (abs(a - b) + a + b) div 2;
end;

begin
  readln(n, m);
  k := 1;

  for i := 1 to m + n - 1 do
    for j := min(i, n) downto max(1, i - m + 1) do
    begin
      a[j, i - j + 1] := k;
      inc(k);
    end;

  for i := 1 to n do
  begin
    for j := 1 to m do
      write(a[i, j]:4);
    writeln;
  end;
  readln;
end.
UPD
Решил написать "красиво"
Код:
const
  place = 4;

var
  i, j, n, m, h, s: word;

begin
  readln(n, m);
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      h := i + j - 2;
      s := (1 + h) * h div 2;
      if h > n then
        dec(s, (1 + h - n) * (h - n) div 2);
      if h > m then
        dec(s, (1 + h - m) * (h - m) div 2);
      if h >= n then
        dec(s, h - n + 1);
      write((s + j):place);
    end;
    writeln;
  end;
  readln;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 14.02.2013 в 00:59.
BDA на форуме
Старый 14.02.2013, 17:47   #3
hottab1
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 23
По умолчанию

Большое спасибо
hottab1 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнить массив змейкой ШВиктория Помощь студентам 2 18.12.2012 18:30
Заполнить массив 6*6 по диагонали змейкой tanyuxxxa Помощь студентам 3 22.11.2012 09:06
Двухмерный массив С++ Arsenx777 Помощь студентам 1 03.10.2011 18:50
Двумерный массив вывод элементов змейкой egor67 Паскаль, Turbo Pascal, PascalABC.NET 4 08.04.2011 17:15
Заполнить массив змейкой NeGaTiVe Помощь студентам 9 28.03.2011 17:08