Составьте программу ,которая заполняет массив b[1..15 ] случайными целыми числами в диапозоне от 1 до 20 и выводит все тройки элементов , строго по возрастанию.
PascalABC.NET 3.2, сборка 1374 от 10.01.2017 Внимание! Если программа не работает, обновите версию!
begin var n:=15; var a:=ArrRandom(n,1,20); a.Println; var i:=0; repeat for var j:=i+1 to n-2 do begin if (a[j]>a[i]) and (a[j+1]>a[j]) then begin Println(a[i],a[j],a[j+1]); i+=1 end else begin i+=1; break end end until i>=n-3 end.
Program triples; const RAND_F = 1; RAND_T = 20; var b: array[1..15] of integer; t: array[1..3] of integer; i, j, max, max_i, tmp: integer; begin randomize; for i := 1 to 15 do b[i] := random(RAND_T) + RAND_F; i := 1; while i < 15 do begin t[1] := b[i]; t[2] := b[i+1]; t[3] := b[i+2]; max := t[1]; for j := 2 to 3 do if t[j] > max then begin max := t[j]; max_i := j; end; tmp := t[3]; t[3] := max; t[max_i] := tmp; if t[2] < t[1] then begin tmp := t[2]; t[2] := t[1]; t[1] := tmp; end; write('Числа ', i, '-', i + 2, ': '); writeln(t[1], ' ', t[2], ' ', t[3]); i := i + 3; end; end.
Внимание! Если программа не работает, обновите версию!
begin
var n:=15;
var a:=ArrRandom(n,1,20); a.Println;
var i:=0;
repeat
for var j:=i+1 to n-2 do begin
if (a[j]>a[i]) and (a[j+1]>a[j]) then begin
Println(a[i],a[j],a[j+1]);
i+=1
end
else begin i+=1; break end
end
until i>=n-3
end.
Пример
2 8 17 11 16 13 15 7 12 9 3 10 15 19 20
2 8 17
3 10 15
10 15 19
15 19 20
const
RAND_F = 1;
RAND_T = 20;
var
b: array[1..15] of integer;
t: array[1..3] of integer;
i, j, max, max_i, tmp: integer;
begin
randomize;
for i := 1 to 15 do
b[i] := random(RAND_T) + RAND_F;
i := 1;
while i < 15 do
begin
t[1] := b[i];
t[2] := b[i+1];
t[3] := b[i+2];
max := t[1];
for j := 2 to 3 do
if t[j] > max then
begin
max := t[j];
max_i := j;
end;
tmp := t[3];
t[3] := max;
t[max_i] := tmp;
if t[2] < t[1] then
begin
tmp := t[2];
t[2] := t[1];
t[1] := tmp;
end;
write('Числа ', i, '-', i + 2, ': ');
writeln(t[1], ' ', t[2], ' ', t[3]);
i := i + 3;
end;
end.