В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
Mrkronomax
Mrkronomax
06.08.2020 15:20 •  Информатика

Рис. 3.48 Задание 8. Исходное положение Робота показано на ри-
сунке 3.49. Где-то справа от Робота есть закрашенная
клетка (расстояние до клетки может быть различным).
Составьте программу, в результате которой Робот дойдет
до закрашенной клетки.
Рис. 3.49
62​


Рис. 3.48 Задание 8. Исходное положение Робота показано на ри-сунке 3.49. Где-то справа от Робота ес

Показать ответ
Ответ:
adam83
adam83
14.09.2022 03:11
// 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.

Пример
Окончание ввода 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
0,0(0 оценок)
Ответ:
Ahdrey0607
Ahdrey0607
11.11.2022 17:43
#include <iostream>
#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 */
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота