Как разбить одномерный массив строк пополам, или практически пополам - 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.

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

  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
Похожие ответы