// PascalABC.NET 3.2, сборка 1427 от 24.04.2017 // Внимание! Если программа не работает, обновите версию!
begin var s1:=SeqRandom(ReadInteger('n1='),-50,50); var s2:=SeqRandom(ReadInteger('n2='),-50,50); var p:=ReadInteger('0-по неубыванию, иное- по невозрастанию:'); var q1:=new Queue<integer>; foreach var m in s1 do q1.Enqueue(m); Write('Очередь 1: ',q1); Writeln; var q2:=new Queue<integer>; foreach var m in s2 do q2.Enqueue(m); Write('Очередь 2: ',q2); Writeln; // очереди сформированы var q:=new Queue<integer>; var a:=(q1.ToArray+q2.ToArray); var s:sequence of integer; if p=0 then s:=a.OrderBy(i->i) else s:=a.OrderByDescending(i->i).ToArray; foreach var m in s do q.Enqueue(m); Write('Очередь-результат: ',q); Writeln; end.
Пример n1= 10 n2= 7 0-по неубыванию, иное- по невозрастанию: 1 Очередь 1: [-26,6,26,-48,-21,-29,27,-39,5,-40] Очередь 2: [50,36,37,46,18,41,-39] Очередь-результат: [50,46,41,37,36,27,26,18,6,5,-21,-26,-29,-39,-39,-40,-48]
k = 5
Объяснение:
q = 15 s = 0 i = 1
Цикл с постусловием:
s = s + i
i = i + 1
выход из цикла когда s > q
q = 15 s = 0 i = 1
s = 0 + 1 = 1
i = 1 + 1 = 2
1 > 15 (НЕТ)
q = 15 s = 1 i = 2
s = 1 + 2 = 3
i = 2 + 1 = 3
3 > 15 (НЕТ)
q = 15 s = 3 i = 3
s = 3 + 3 = 6
i = 3 + 1 = 4
6 > 15 (НЕТ)
q = 15 s = 6 i = 4
s = 6 + 4 = 10
i = 4 + 1 = 5
10 > 15 (НЕТ)
q = 15 s = 10 i = 5
s = 10 + 5 = 15
i = 5 + 1 = 6
15 > 15 (НЕТ)
q = 15 s = 15 i = 6
s = 15 + 6 = 21
i = 6 + 1 = 7
21 > 15 (ДА) - выход из цикла
q = 15 s = 21 i = 7
k = i - 2
k = 7 - 2 = 5