Помагите пжл, составить программу на языке ПАСКАЛЬ СОСТАВИТЬ ПРОГРАММУ СОКРАЩЕНИЯ ОДНОМЕРНОГО ЧИСЛОВОГО МАССИВА ПУТЕМ УДАЛЕНИЯ ( ВСЕХ ЭЛЕМЕНТОВ С НУЛЕВЫМИ ЗНАЧЕНИЯМИ . ДОПОЛНИТЕЛЬНЫЙ МАССИВ ИСПОЛЬЗОВАТЬ НЕ РАЗРЕШАЕТСЯ ) ..........
Помагите пжл, составить программу на языке ПАСКАЛЬ СОСТАВИТЬ ПРОГРАММУ СОКРАЩЕНИЯ ОДНОМЕРНОГО ЧИСЛОВОГО МАССИВА ПУТЕМ УДАЛЕНИЯ ( ВСЕХ ЭЛЕМЕНТОВ С НУЛЕВЫМИ ЗНАЧЕНИЯМИ . ДОПОЛНИТЕЛЬНЫЙ МАССИВ ИСПОЛЬЗОВАТЬ НЕ РАЗРЕШАЕТСЯ ) .........ЕСЛИ МОЖЕТИ ПОЯСНИТЕ СЛОВАМИ ЧТО ДЕЛАЕТ ПРОГРАММА
Ответ(ы) на вопрос:
var a : array of integer; n, i, last : integer; begin read (n); setlength (a, n); for i := 0 to n - 1 do read (a[i]); last := 0; for i := 0 to n - 1 do if a[i] <> 0 then begin a[last] := a[i]; inc (last); end; setlength (a, last); for i := 0 to last - 1 do write (a[i], ' '); end. Суть такова. Имеем динамический массив. Считали массив, так как динамический, то от нуля все. Установили последнюю свободную ячейку 0. Идем по массиву и ищем ненулевое значение. Как только нашли, пишем его в свободную ячейку и увеличиваем занчение свободной ячейки на 1. При этом наши данные не затираются. После окончания всех операций в last лежит длина массива.
Статитечкий массив. var a : array [1..100] of integer; n, i, last : integer; begin read (n); for i := 1 to n do read (a[i]); last := 1; for i := 1 to n do if a[i] <> 0 then begin a[last] := a[i]; inc (last); end; dec (last); for i := 1 to last do write (a[i], ' '); end.
Не нашли ответ?
Похожие вопросы