/* Searching of the minimal sequence of the even numbers. * ARGUMENTS: * - array of the numbers: * int mainArray[]; * - number of elements in the array: * int numOfEl; * RETURNS: None. */ void MinSeqOfNum(int mainArray[], int numOfEl) { int minSeqLenght = numOfEl + 1, // минимальная длина последовательности seqLenght = 1, // длина текущей последовательности numEnd = 0; // номер элемента, на котором заканчивается последовательность
/* Цикл обработки массива */ for (int i = 1; i < numOfEl; i++) { if (mainArray[i] < mainArray[i - 1] && mainArray[i] % 2 == 0 && mainArray[i - 1] % 2 == 0) seqLenght++; else { if (seqLenght < minSeqLenght && seqLenght != 1) minSeqLenght = seqLenght, numEnd = i; seqLenght = 1; } }
/* Дополнительная проверка на случай, если минимальная последовательность * закончилась на последнем элементе массива */ if (seqLenght < minSeqLenght && seqLenght != 1) minSeqLenght = seqLenght, numEnd = numOfEl; if (minSeqLenght != numOfEl + 1) { cout << endl << endl << "Minimal sequence = " << minSeqLenght << endl << "Group: " << endl;
/* Вывод группы с минимальной длиной */ for (int i = numEnd - minSeqLenght; i < numEnd; i++) cout << mainArray[i] << "; "; } else cout << endl << endl << "There is no such sequence exists..." << endl; } /* End of the 'MinSeqOfNum' function */
/* Main program function. * ARGUMENTS: None. * RETURNS: * (int) errors level for operation system. */ int main() { srand(time(0)); int numOfEl, // кол-во элементов в массиве *mainArray; // основной массив
/* Инициализация кол-ва элементов массива */ cout << "Input number of the elements: "; cin >> numOfEl;
/* Выделение памяти под массив */ if (numOfEl > 0) mainArray = new int[numOfEl]; else { cout << "Error! Number of the elements cannot be negative!"; return 0; }
/* Инициализация основного массива случайными значениями */ for (int i = 0; i < numOfEl; i++) mainArray[i] = rand() % 1000;
/* Инициализация основного массива пользовательскими значениями */ /* for (int i = 0; i < numOfEl; i++) cin >> mainArray[i]; */
/* Вывод массива */ for (int i = 0; i < numOfEl; i++) cout << mainArray[i] << "; ";
/// Поиск последовательности убывающих четных чисел /// MinSeqOfNum(mainArray, numOfEl);
system("pause"); return 0; } /* End of the 'main' function */
// PascalABC.NET 3.2, сборка 1485 от 15.06.2017 // Внимание! Если программа не работает, обновите версию!
function IsPrime(Self:integer):boolean; extensionmethod; begin var n:=Self; if n<4 then Result:=True else begin var found:=(n mod 2=0); var p:=3; while (not found) and (sqr(p)<=n) do begin found:=(n mod p=0); p+=2 end; Result:=not found end end;
function Digits(Self:integer):integer; extensionmethod; begin Result:=Self.ToString.Length end;
begin var x:=ReadSeqIntegerWhile('Окончание ввода 0'+NewLine,p->p<>0).ToArray; var y:=x.Where(y->(y.Digits<=5) and y.IsPrime).ToArray; var s:=y.Select((p,i)->(p,i)).OrderBy(p->p[0]); var h:=(s.Take(3)+s.TakeLast(2)).Select(p->p[0]).ToHashSet; y:=y.Where(p->not (p in h)).ToArray; Writeln('- '*25); y.Println end.