Задание:
Помагите пжл, составить программу на языке ПАСКАЛЬ СОСТАВИТЬ ПРОГРАММУ СОКРАЩЕНИЯ ОДНОМЕРНОГО ЧИСЛОВОГО МАССИВА ПУТЕМ УДАЛЕНИЯ (ВСЕХ ЭЛЕМЕНТОВ СНУЛЕВЫМИ ЗНАЧЕНИЯМИ. ДОПОЛНИТЕЛЬНЫЙ МАССИВ ИСПОЛЬЗОВАТЬ НЕ РАЗРЕШАЕТСЯ) … ЕСЛИ МОЖЕТИ ПОЯСНИТЕ СЛОВАМИ ЧТО ДЕЛАЕТ ПРОГРАММА
Решение:
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.
Знаете другой ответ?