3. Напишите блок-схему и код программы для решения следующей задачи : Задача:
Как оплатить суммув 785 тенге с наименьшего количества монет номиналом
100, 50, 10,5.1 тенге? Составь блок -схему выполнения задания и программу.
4. Найдите математическое выражение, записи выражения на языке РуНоп
1. (ки З-у"из)+(2*х-2*у)
2. (р—к8)4"-4*р"КЗ-2°Ъ)
это сор если не знаете не пишите
type razbivka = array[0..PTR] of byte;
var n, i, z, k: byte;
x: razbivka;
procedure p(var x: razbivka; var z: byte);
var i, j, s: byte;
begin
i := z - 1;
s := x[z];
while (i > 1) and ( x[i - 1] <= x[i] ) do
begin
s := s + x[i];
dec(i);
end;
inc( x[i] );
z := i + s - 1;
for j := i + 1 to z do
x[j] := 1;
end;
begin
write('Введите число: ');
readln(n);
write(n,' = ');
z := n;
for i := 1 to z do
x[i] := 1;
for i := 1 to n do begin
if i > 1 then write(' + ');
write( x[i], '' );
end;
writeln;
repeat
p( x, z );
inc(k);
write( n,' = ' );
for i := 1 to z do begin
if i > 1 then write(' + ');
write( x[i], '' );
end;
writeln;
until z = 1;
end.
p.s: нашел в интернете для вас вариант с рекурсией. Сами можете убедиться, что с ней только хуже (по быстродействию уж точно)
const m = 100;
var a: array[1..m] of integer;
k, n: integer;
procedure p(j,n: integer);
var i: integer;
begin if ( n = 0 ) and ( k > 1 ) then
begin for i := 1 to k do
write( a[i] : 4 );
writeln;
end else for i := j to n do
begin
Inc(k);
a[k] := i;
p( j, n - i );
Dec(k);
end;
end;
begin
write('Введите число: ');
readln(n);
k := 0;
p(1,n);
end.
значения PTR и m можно поставить и больше, но тогда я не ручаюсь)
procedure FormMas(a: array[,] of integer; var v: array of int64);
var
m, n, i, j, k: integer;
begin
m := length(a, 0);
n := length(a, 1);
setlength(v, n);
for j := 0 to n - 1 do
begin
v[j] := 1;
k := 0;
for i := 0 to m - 1 do
if a[i, j] < 0 then
begin
k := k + 1;
v[j] := v[j] * a[i, j]
end;
if k = 0 then
v[j] := 0;
end;
end;
function KolNul(a: array[,] of integer): integer;
var
m, n, i, j, k, p: integer;
begin
k := 0;
m := length(a, 0);
n := length(a, 1);
for j := 0 to n - 1 do
begin
p := 0;
for i := 0 to m - 1 do
if a[i, j] < 0 then
p := p + 1;
if p = 0 then
k := k + 1;
end;
KolNul := k;
end;
var
m, n, i, j, k: integer;
a: array[,] of integer;
b: array of int64;
begin
read(m, n);
setlength(a, m, n);
for i := 0 to m - 1 do
for j := 0 to n - 1 do
read(a[i, j]);
FormMas(a, b);
for j := 0 to n - 1 do
write(b[j], ' ');
writeln;
k := KolNul(a);
write(k);
end.