Как разбить одномерный массив строк пополам, или практически пополам - Pascal
Формулировка задачи:
Доброго времени суток друзья. Задался таким вопросом. Как мне разбить одномерный массив строк по полам. Или практически пополам,если массив не равномерный. Допустим в случае равного массива:
Исходный массив
A[1] = 'asd'
A[2] = 'axf'
A[3] = 'alr'
A[4] = 'rty'
Получилось два массива:
B = asd_axf
C = alr_rty
И как это сделать если массив не равномерный. Пишу программу для сортировки по методу Боуза Нельсона. Очень нужна реализация данной идеи.Помогите кто может.
Решение задачи: «Как разбить одномерный массив строк пополам, или практически пополам»
textual
Листинг программы
- var
- a, b, c: Array[Byte] Of String;
- i, an, bn, cn: Byte;
- begin
- repeat
- Write('Input n=');
- ReadLn(an);
- until (an > 0);
- for i := 0 to an - 1 do
- begin
- Write('Input ', i + 1, ' string: '); ReadLn(a[i]);
- end;
- i := 0; bn := 0; cn := 0;
- while (i < an div 2) do
- begin
- b[bn] := a[i]; Inc(bn);
- Inc(cn); c[an div 2 - cn] := a[an - 1 - i];
- Inc(i);
- end;
- if (Odd(an))
- then
- begin
- b[bn] := a[an div 2];
- Inc(bn);
- end;
- Write('Array A:');
- for i := 0 to an - 1 do
- Write(' | ', a[i]);
- WriteLn(' |');
- Write('Array B:');
- for i := 0 to bn - 1 do
- Write(' | ', b[i]);
- WriteLn(' |');
- Write('Array C:');
- for i := 0 to cn - 1 do
- Write(' | ', c[i]);
- WriteLn(' |');
- end.
Объяснение кода листинга программы
- Объявление переменных:
-
a
,b
,c
- массивы строк -i
,an
,bn
,cn
- переменные типа Byte - Запрос ввода значения переменной
an
(число элементов массива) до тех пор, пока введенное значение не будет больше нуля. - Заполнение массива
a
строками, введенными пользователем. - Инициализация переменных
i
,bn
,cn
и запуск цикла, который разбивает массивa
на массивыb
иc
пополам (примерно).- Копирование половины элементов из массива
a
в массивb
и аналогично копирование в массивc
, если исходный массив имеет нечетное количество элементов.
- Копирование половины элементов из массива
- Вывод содержимого массивов
a
,b
иc
. - Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д