Как разбить одномерный массив строк пополам, или практически пополам - 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
. - Завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д