Объяснить принцип работ следующих программ (записать, что происходит в каждой сточке программы): 1)
program n22;
var a,b:integer;
begin
writeln('введите целое число a');
readln(a);
writeln('введите целое число b');
readln(b);
writeln ('a mod b = ',a mod b);
writeln ('a div b = ',a div b);
end.
2)
program n_s;
var a, b, c: integer;
p, s: real;
begin
writeln('Вычисление площади треугольника по трем сторонам');
write('введите значения a, b, c');
readln(a, b, c);
p:= (a+b+c)/2;
s:= sqrt(p*(p-a)*(p-b)*(p-c));
writeln ('s=', s:2:1);
end.
[0, 0, "a", 1]
[1, 1, "b", 2]
[1, 2, "bb", 3]
[2, 2, "b", 4]
[0, 3, "abba", 5]
[3, 3, "a", 6]
[3, 4, "aa", 7]
[4, 4, "a", 8]
[3, 5, "aaa", 9]
[4, 5, "aa", 10]
[5, 5, "a", 11]
[3, 6, "", 12]
[4, 6, "aaa", 13]
[5, 6, "aa", 14]
[6, 6, "a", 15]
[2, 7, "bb", 16]
[7, 7, "b", 17]
[6, 8, "aba", 18]
[8, 8, "a", 19]
[7, 9, "bab", 20]
[9, 9, "b", 21]
#код программы Ruby 22
s = "abbbab"
n = 0
for r in 0..s.size-1
for l in 0..r
t = s[l..r]
if t.reverse == t
n += 1
p [l,r,t,n]
end
end
end
Для нахождения нода используется алгоритм Эвклида
//PascalABC.Net
function NOD(A, B: integer): integer;
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
procedure pNOD(A, B: integer; var NOD: integer);
begin
while A <> B do
if A > B then A := A - B else B := B - A;
NOD := A;
end;
begin
var a: Array of integer := (16, 32, 40, 64, 80, 128);
var n := a[low(a)];
for var i := low(a) to high(a) do
pNOD(n, a[i], n);
Writeln(n);
end.