Создать блок-схему алгоритма решения следующей задачи. Даны 3 числа x, y и z. Значение наибольшего из них присвоить переменной m. Сохранить файл с блок- схемой в папке
Const n=20; var a:array[1..n]of integer; i,b,k,c,f,g,h:integer; begin for i:=1 to n do a[i]:=Random(70)-20; for i:=1 to n do write(a[i],' '); writeln; for i:=1 to n do begin if (a[i] mod 5 = 0) and (a[i] mod 10<>0) or (a[i]=50) then begin b:=i; for b:=i to (n-1) do a[i]:=a[i+1]; end; end; for i:=1 to n do write(a[i],' '); write('введите к '); read(k); for i:=1 to n do begin if a[i] mod i = 0 then begin c:=i; for i:=n downto c+1 do begin a[i]:=a[i-1]; a[c+1]:=k; end;end;end; for i:=1 to n do write(a[i],' '); writeln; f:=0; g:=0; for i:=n downto 1 do begin if (a[i]>0) then f:=i; end; if a[f]=0 then write('нет положительных '); for i:=n downto 1 do begin if (a[i]<0) then g:=i; end; if (a[g]=0) then write('нет отрицательных '); if (a[f]<>0) and (a[g]<>0) then begin h:=a[f]; a[f]:=a[g]; a[g]:=h; end; for i:=1 to n do write(a[i],' '); writeln; end.
Будем последовательно находить количество дорог до пунктов, которые встречаются по пути к пункту Ж. Мы уже находимся в городе А, поэтому туда можно сказать ведет 1 дорога. ставим метку. От города А дороги идут в Б Г В и Д, но мы не можем сказать, сколько дорог ведет в города Г В и Д, потому что в них ведет по 2 дороги, из А и из Б/B/Г соответственно, а знаем мы только количество дорог в А(1). Поэтому ставим метку городу, которому мы ее можем дать - это город Б, в который ведет только 1 дорога из А. Количество дорог в какой-либо город равна сумме дорог в города, которые предшествуют ему. То есть в Б ведет тоже только 1 дорога. Помечаем.
По аналогии делаем со всеми другими городами:
Город В: в него ведут 2 дороги, из А и Б, суммируем количество дорог в них и получаем количество дорог в В, то есть 1+1=2.
Город Г: 2 дороги, из А и В, то есть количество дорог в г равно сумме дорог в А и В, то есть 1+2=3
var a:array[1..n]of integer;
i,b,k,c,f,g,h:integer;
begin
for i:=1 to n do a[i]:=Random(70)-20;
for i:=1 to n do
write(a[i],' ');
writeln;
for i:=1 to n do begin
if (a[i] mod 5 = 0) and (a[i] mod 10<>0) or (a[i]=50) then begin
b:=i;
for b:=i to (n-1) do
a[i]:=a[i+1];
end; end;
for i:=1 to n do
write(a[i],' ');
write('введите к ');
read(k);
for i:=1 to n do begin
if a[i] mod i = 0 then begin
c:=i;
for i:=n downto c+1 do begin
a[i]:=a[i-1];
a[c+1]:=k;
end;end;end;
for i:=1 to n do
write(a[i],' ');
writeln;
f:=0; g:=0;
for i:=n downto 1 do begin
if (a[i]>0) then f:=i;
end;
if a[f]=0 then write('нет положительных ');
for i:=n downto 1 do begin
if (a[i]<0) then g:=i;
end;
if (a[g]=0) then write('нет отрицательных ');
if (a[f]<>0) and (a[g]<>0) then begin
h:=a[f]; a[f]:=a[g]; a[g]:=h; end;
for i:=1 to n do
write(a[i],' ');
writeln;
end.
46
Объяснение:
Будем последовательно находить количество дорог до пунктов, которые встречаются по пути к пункту Ж. Мы уже находимся в городе А, поэтому туда можно сказать ведет 1 дорога. ставим метку. От города А дороги идут в Б Г В и Д, но мы не можем сказать, сколько дорог ведет в города Г В и Д, потому что в них ведет по 2 дороги, из А и из Б/B/Г соответственно, а знаем мы только количество дорог в А(1). Поэтому ставим метку городу, которому мы ее можем дать - это город Б, в который ведет только 1 дорога из А. Количество дорог в какой-либо город равна сумме дорог в города, которые предшествуют ему. То есть в Б ведет тоже только 1 дорога. Помечаем.
По аналогии делаем со всеми другими городами:
Город В: в него ведут 2 дороги, из А и Б, суммируем количество дорог в них и получаем количество дорог в В, то есть 1+1=2.
Город Г: 2 дороги, из А и В, то есть количество дорог в г равно сумме дорог в А и В, то есть 1+2=3
И так далее. Рисунок со всеми метками прикреплен