Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 09.11.2013
Сообщений: 8
1

Оптимизация перехода массива

25.01.2017, 21:46. Показов 1133. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно написать программу, которая оптимизированно осуществит переход от шестимерного массива к трехмерному, желательно в паскале. Прошу помощи, заранее благодарен!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2017, 21:46
Ответы с готовыми решениями:

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии "оптимизатора" в какой то умной книжке был...

Условие перехода к следующему элементу массива
Подскажите, как написать условие, чтобы при определении значения массива 'вторая новая строка'....

Оператор условного перехода, безусловного перехода
Помагите пожалуйста решить!!! 1.Подсчитать количество целых чисел среди чисел a, b, c. 2.На оси...

Оптимизация создания 3х-мерного массива
Доброго времени суток! Передо мной встала задача объединения нескольких одинаковых по размерам...

1
Модератор
9871 / 5239 / 3306
Регистрация: 17.08.2012
Сообщений: 16,007
28.01.2017, 09:47 2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Не существует каких-либо стандартизированных договорённостей по переупорядочиванию многомерных массивов при изменении количества измерений. Опишите взаимное соответствие индексов шестимерного и трёхмерного массива.

Если элементы массива должны следовать в порядке возрастания индексов, а затем измерений массива, то никакой программы для "перехода" не требуется. Даже копирования массива не требуется. Достаточно выделить под оба массива одну и ту же область памяти:
Pascal
1
2
var a: array[1..3, 1..3, 1..3, 1..3, 1..3, 1..3] of integer;
    b: array[1..9, 1..9, 1..9] of integer absolute a;
Массив b ссылаются на область памяти в которой расположен массив a, и обращаться к этой области можно как к шестимерному, так и как к трёхмерному массиву.

Добавлено через 31 минуту
Вот Вам пример. Шестимерный массив заполняется натуральными числами по возрастанию, в порядке возрастания индексов, затем размерностей, и выводится в файл, затем этот массив интерпретируется как трёхмерный и выводится в другой файл. Вывод массивов в файлы производится по частям в виде двухмерных массивов, соответствующих последним индексам, поскольку боллее чем два измерения в двумерное пространство без каких-либо преобразований или условностей вывести невозможно. Вывод в файл сделан потому, что даже в случае шестимерного массива со всеми индексами даже в диапазоне 1..2 всё это дело на экран не помещается. Вывод массивов в разные файлы сделан для удобства сравнения массивов с помощью текстового редактора.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var a: array[1..3, 1..3, 1..3, 1..3, 1..3, 1..3] of integer;
    b: array[1..9, 1..9, 1..9] of integer absolute a;
    i, j, k, l, m, n, t: integer;
    f: text;
begin
  assign(f, 'a.txt');
  rewrite(f);
  t := 0;
  {формирование и вывод 6-мерного массива}
  for i := 1 to 3 do
    for j := 1 to 3 do
      for k := 1 to 3 do
        for l := 1 to 3 do
          begin
            writeln(f, 'a[', i, ', ', j, ', ', k, ', ', l, ']:');
            for m := 1 to 3 do
              begin
                for n := 1 to 3 do
                  begin
                    inc(t);
                    a[i, j, k, l, m, n] := t;
                    write(f, a[i, j, k, l, m, n]:4)
                  end;
                writeln(f)
              end;
          end;
  close(f);
  {вывод 3-мерного массива}
  assign(f, 'b.txt');
  rewrite(f);
  for i := 1 to 9 do
    begin
      writeln(f, 'b[', i, ']:');
      for j := 1 to 9 do
        begin
          for k := 1 to 9 do write(f, b[i, j, k]:4);
          writeln(f)
        end;
    end;
  close(f)
end.
Добавлено через 6 минут
Ах, да, на всякий случай, мало ли... Программа не выдаёт каких-либо данных на экран, она выводит массивы в файлы и тут же закрывается. Так, мелькнуло что-то, и пропало. Результат работы программы - это два файла, a.txt и b.txt в той папке, откуда была запущена программа. Эти файлы можно просмотреть с помощью текстового редактора, например, с помощью "Блокнот"а.
0
28.01.2017, 09:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.01.2017, 09:47
Помогаю со студенческими работами здесь

Перевод массива и его оптимизация
Добрый день. Задание такое : " необходимо шестиместный массив перевести в трехмерный и...

Оптимизация программы нахождения медианы массива
Всем доброй ночи. Мне надо было написать программку, которая выводит медиану массива - перелистал...

Оптимизация методом Ньютона (нахождение точки минимума). Оптимизация кода
MATLAB только начал осваивать. Попытался реализовать нахождение точки минимума методом Ньютона...

Оптимизация расчета СКО для каждого элемента массива
День добрый форумчане. Поставлена задача для каждого элемента массива рассчитать СКО (с квадратом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru