Как разбить одномерный массив строк пополам, или практически пополам - Pascal

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток друзья. Задался таким вопросом. Как мне разбить одномерный массив строк по полам. Или практически пополам,если массив не равномерный. Допустим в случае равного массива: Исходный массив A[1] = 'asd' A[2] = 'axf' A[3] = 'alr' A[4] = 'rty' Получилось два массива: B = asd_axf C = alr_rty И как это сделать если массив не равномерный. Пишу программу для сортировки по методу Боуза Нельсона. Очень нужна реализация данной идеи.Помогите кто может.

Решение задачи: «Как разбить одномерный массив строк пополам, или практически пополам»

textual
Листинг программы
  1. var
  2.     a, b, c: Array[Byte] Of String;
  3.     i, an, bn, cn: Byte;
  4. begin
  5.     repeat
  6.         Write('Input n=');
  7.         ReadLn(an);
  8.     until (an > 0);
  9.     for i := 0 to an - 1 do
  10.     begin
  11.         Write('Input ', i + 1, ' string: '); ReadLn(a[i]);
  12.     end;
  13.    
  14.    
  15.     i := 0; bn := 0; cn := 0;
  16.     while (i < an div 2) do
  17.     begin
  18.         b[bn] := a[i]; Inc(bn);
  19.         Inc(cn); c[an div 2 - cn] := a[an - 1 - i];
  20.         Inc(i);
  21.     end;
  22.     if (Odd(an))
  23.     then
  24.     begin
  25.         b[bn] := a[an div 2];
  26.         Inc(bn);
  27.     end;
  28.     Write('Array A:');
  29.     for i := 0 to an - 1 do
  30.         Write(' | ', a[i]);
  31.     WriteLn(' |');
  32.     Write('Array B:');
  33.     for i := 0 to bn - 1 do
  34.         Write(' | ', b[i]);
  35.     WriteLn(' |');
  36.     Write('Array C:');
  37.     for i := 0 to cn - 1 do
  38.         Write(' | ', c[i]);
  39.     WriteLn(' |');
  40. end.

Объяснение кода листинга программы

  1. Объявление переменных:    - a, b, c - массивы строк    - i, an, bn, cn - переменные типа Byte
  2. Запрос ввода значения переменной an (число элементов массива) до тех пор, пока введенное значение не будет больше нуля.
  3. Заполнение массива a строками, введенными пользователем.
  4. Инициализация переменных i, bn, cn и запуск цикла, который разбивает массив a на массивы b и c пополам (примерно).
    • Копирование половины элементов из массива a в массив b и аналогично копирование в массив c, если исходный массив имеет нечетное количество элементов.
  5. Вывод содержимого массивов a, b и c.
  6. Завершение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы