Условно-бесплатные - это означает, что они бесплатны ПРИ НЕКОТОРЫХ УСЛОВИЯХ. Например, что бесплатно ими можно пользоваться только некоторое время (чтоб понять, что это запрограмма и подходит ли она конкретно вам), а сверх того - уже за плату. Или можно пользоваться только некоторыми базовыми функциями программы, а расширенными - уже за плату. Или её функционал ограничен размерами обрабатываемой информации - скажем, схему на 64 узла я ещё могу смоделировать, а вот более сложную - только заплатив. Ну то есть примерно понятно: что-то можно, но не всё и/или не вечно. Лицензионные программы свободны от этих ограничивающих условий: можно всё и почти вечно (некоторые программы, даже платные, всё равно устанавливают предел срокам своей работы - это особенно часто встречается в антивирусах). беспалтные программы тоже свободны от таких ограничений, но очень часто их функционал недостаточен, и ещё чаще бесплатных программ, которые делают "вот конкретно это", просто нет. Скажем, нет бесплатных программ компьютерного проектирования топологии (те, что есть, на самом деле просто взломаны. а для топологии ИС нет вооще ничего). Нет бесплатных программ моделирования полупроводниковых приборов, типа SUPREM IV, - вообще нет. Нет хороших бесплатных программ вёрстки текстов. Даже шрифтов некоторых бесплатно не нарыть. Ну и так далее. То есть как только попадается СЛОЖНАЯ и не сильно распространённая задача, не для домохозяек, - так кранты, и приходится приобретать лицензию...
Суть такова. Имеем динамический массив. Считали массив, так как динамический, то от нуля все. Установили последнюю свободную ячейку 0. Идем по массиву и ищем ненулевое значение. Как только нашли, пишем его в свободную ячейку и увеличиваем занчение свободной ячейки на 1. При этом наши данные не затираются. После окончания всех операций в last лежит длина массива.
Условно-бесплатные - это означает, что они бесплатны ПРИ НЕКОТОРЫХ УСЛОВИЯХ. Например, что бесплатно ими можно пользоваться только некоторое время (чтоб понять, что это запрограмма и подходит ли она конкретно вам), а сверх того - уже за плату. Или можно пользоваться только некоторыми базовыми функциями программы, а расширенными - уже за плату. Или её функционал ограничен размерами обрабатываемой информации - скажем, схему на 64 узла я ещё могу смоделировать, а вот более сложную - только заплатив.
Ну то есть примерно понятно: что-то можно, но не всё и/или не вечно.
Лицензионные программы свободны от этих ограничивающих условий: можно всё и почти вечно (некоторые программы, даже платные, всё равно устанавливают предел срокам своей работы - это особенно часто встречается в антивирусах).
беспалтные программы тоже свободны от таких ограничений, но очень часто их функционал недостаточен, и ещё чаще бесплатных программ, которые делают "вот конкретно это", просто нет. Скажем, нет бесплатных программ компьютерного проектирования топологии (те, что есть, на самом деле просто взломаны. а для топологии ИС нет вооще ничего). Нет бесплатных программ моделирования полупроводниковых приборов, типа SUPREM IV, - вообще нет. Нет хороших бесплатных программ вёрстки текстов. Даже шрифтов некоторых бесплатно не нарыть. Ну и так далее. То есть как только попадается СЛОЖНАЯ и не сильно распространённая задача, не для домохозяек, - так кранты, и приходится приобретать лицензию...
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.