/* 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.
#include <ctime>
using namespace std;
/* 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 */
// Внимание! Если программа не работает, обновите версию!
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.
Пример
Окончание ввода 0
3191 10853 769 683 81 52 653 85781 1 7937 67 316109 767071 98227 7811 283 84 593 976307 815292 31 53 96269 50881 5760 2 9371 7963 50539 2887 370 9973 918 23 2153 2637 183301 11 93563 21499 67967 694 817 990805 86287 805517 55837 307 87251 111919 37 719 4988 89 46727 575581 54042 97847 177 4817 16357 509 89057 4 8219 17623 35 937 3 5 81916 23633 2728 1069 991 122599 61 383 789088 80 614254 1266 72221 143337 195733 491 1831 12781 551093 494563 9316 9721 1483 2815 409 837812 17 41 419 9 13 32533 50329 408 43 768127 317491 631 90702 74005 310087 77893 16356 43451 36017 7 6706 755863 411 551875 595024 681 384049 85933 841968 83 7879 688697 23459 107 47194 257 38 0
- - - - - - - - - - - - - - - - - - - - - - - - -
3191 10853 769 683 653 85781 7937 67 283 593 31 53 96269 9371 7963 50539 2887 9973 23 2153 11 93563 21499 67967 86287 55837 307 87251 37 719 89 46727 4817 509 89057 8219 17623 937 5 23633 1069 991 61 383 72221 491 1831 12781 9721 1483 409 17 41 419 13 32533 50329 43 631 77893 43451 36017 7 85933 83 7879 23459 107 257