PascalABC.NET 3.7:
###RS.AdjacentGroup.SelectMany(x → x.Len >= 3 ? x.Len + x[0] : x.Str).PrПояснение:
RS - ReadString: Возвращает значение типа string, введенное с клавиатуры.
AdjacentGroup: Группирует одинаковые подряд идущие элементы, получая последовательность массивов.
SelectMany: Проецирует каждый элемент последовательности в новую последовательность и объединяет результирующие последовательности в одну последовательность.
.Len - .Length: Длина массива.
.Str - .JoinToString: Преобразует последовательность символов в строку, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
.Pr - .Print: Выводит последовательность символов на экран, не используя разделитель (при последовательность другого типа данных в качестве разделителя используется пробел).
Пример работы:
Проверку можно устроить, например, так. Пусть сначала i = 0, и в цикле увеличиваем i, пока не уйдем за границы массива или не встретим элемент, равный 7. После выхода из цикла проверяем, по какой причине был выход из цикла, и в зависимости от этого выводим либо номер элемента, либо сообщение об отсутствии семерок. При этом будет выведен только номер первой семерки, если их в массиве несколько.
Вывод массива можете дописать при необходимости самостоятельно, видимо, считается, что вы это умеете делать :)
Код (Pascal):
const
n = 20;
var
a: array[1..n] of integer;
i: integer;
begin
randomize;
for i := 1 to n do
a[i] := random(50) + 1;
i := 0;
repeat
i := i + 1;
until (i > n) or (a[i] = 7);
if i > n then
write('нет')
else
write(i)
end.