Дискретность. Процесс решения задачи должен быть разбит на последовательность отдельных шагов-команд, которые выполняются одна за другой. Только после завершения одной команды начинается выполнение следующей.
Понятность. Алгоритм должен содержать только те команды, которые известны исполнителю.
Детерминированность. Каждый шаг и переход от шага к шагу должны быть точно определены, чтобы его мог выполнить любой другой человек или механическое устройство. У исполнителя нет возможности принимать самостоятельное решение (алгоритм исполняется формально).
Конечность. Обычно предполагают, что алгоритм заканчивает работу за конечное число шагов. Результат работы алгоритма также должен быть получен за конечное время. Можно расширить понятие алгоритма до понятия процесса, который по различным каналам получает данные, выводит данные и потенциально может не заканчивать свою работу.
Массовость. Алгоритм должен решать не одну частную задачу, а класс задач. Не имеет смысла строить алгоритм нахождения наибольшего общего делителя только для чисел 10 и 15.
Объяснение:
A, B, C: array[1..15] of real;
i, m, max_weight, b_n, c_n, N, max: integer;
s: real;
begin
N := 15;
m := 10;
max_weight := 50;
writeln('ВВедите массы состава ', m, ' состоящего из ', n, ' вагонов');
for i := 1 to n do
begin
write('Масса вагона № ', i, ' = ');
readln(a[i]);
end;
writeln();
writeln('Все вагоны:');
for i := 1 to n do
writeln('Вагон №', i, ' = ', a[i], ' тон');
writeln();
writeln('Порожние вагоны:');
for i := 1 to n do
if (A[i] <= m) then
writeln('Вагон №', i);
writeln();
s := 0;
writeln('Груженные вагоны:');
for i := 1 to n do
if (A[i] > m) then begin
s := s + a[i];
writeln('Вагон №', i);
end;
Writeln('Сумма масс груженных вагонов = ', s);
{// if s > max_weight then begin
// writeln('Превышение массы! Состав не будет сформирован');
// exit;
// end;}
writeln;
writeln('Новый состав:');
s := 0;
for i := 1 to n do
if (A[i] > m) and (s + A[i] <= max_weight) then begin
b_n := b_n + 1;
s := s + A[i];
B[b_n] := A[i];
writeln('Вагон №', b_n, ' = ', B[b_n], ' тон');
end
else begin
c_n := c_n + 1;
C[c_n] := A[i];
end;
writeln();
writeln('Остаток:');
for i := 1 to c_n do
writeln('Вагон №', i, ' = ', C[i], ' тон');
writeln();
max := 1;
for i := 1 to b_n do
if B[i] > B[max] then
max := i;
writeln('Максимальная масса в составе: Вагон №', max, ' = ', B[max], ' тон');
end.