Решение задач. Array30-36


array30-36

Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи Array30-36.

Задачи Array30-36

Array30. Дан массив размера N. Найти номера тех элементов массива, которые больше своего правого соседа, и количество таких элементов. Найденные номера выводить в порядке их возрастания.

program array30;

var
  A: array[1..10] of integer;
  N, k, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  k := 0;
  for i := 1 to N - 1 do
    if A[i] > A[i + 1] then
    begin
      inc(k);
      write(i, ' ')
    end;
  writeln;
  write(k);
end.

Array31. Дан массив размера N. Найти номера тех элементов массива, которые больше своего левого соседа, и количество таких элементов. Найденные номера выводить в порядке их убывания.

program array31;

var
  A: array[1..10] of integer;
  N, k, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  k := 0;
  for i := 2 to N do
    if A[i] > A[i - 1] then
    begin
      inc(k);
      write(i, ' ')
    end;
  writeln;
  write(k);
end.

Array32°. Дан массив размера N. Найти номер его первого локального минимума (локальный минимум — это элемент, который меньше любого из своих соседей).

program array32;

var
  A: array[1..10] of integer;
  N, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  
  for i := 2 to N - 1 do
    if (A[i] < A[i - 1]) and (A[i] < A[i + 1]) then
    begin
      write(i, ' ');
      exit; {завершает программу}
    end;
  writeln(0); {если минимума нет}
end.

Array33. Дан массив размера N. Найти номер его последнего локального максимума (локальный максимум — это элемент, который больше любого из своих соседей).

program array33;

var
  A: array[1..10] of integer;
  N, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  
  for i := N - 1 downto 2 do
    if (A[i] > A[i - 1]) and (A[i] > A[i + 1]) then
    begin
      write(i, ' ');
      exit;
    end;
  writeln(0); {если максимума нет}
end.

Array34. Дан массив размера N. Найти максимальный из его локальных минимумов (определение локального минимума дано в задании Array32).

program array32;

var
  A: array[1..10] of integer;
  N, max, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  
  max := -MaxInt;
  
  for i := 2 to N - 1 do
    if (A[i] < A[i - 1]) and (A[i] < A[i + 1]) then if A[i] > max then max := A[i];
      
  writeln(max); 
end.

Array35. Дан массив размера N. Найти минимальный из его локальных максимумов (определение локального максимума дано в задании Array33).

program array35;

var
  A: array[1..10] of integer;
  N, min, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  
  min := MaxInt;
  
  for i := N - 1 downto 2 do
    if (A[i] > A[i - 1]) and (A[i] > A[i + 1]) then
      if A[i] < min then min := A[i];
      
  writeln(min); 
end.

Array36. Дан массив размера N. Найти максимальный из его элементов, не являющихся ни локальным минимумом, ни локальным максимумом (определения локального минимума и локального максимума даны в заданиях Array32 и Array33). Если таких элементов в массиве нет, то вывести 0 (как вещественное число).

program array36;

var
  A: array[1..10] of integer;
  N, max, i: integer;

begin
  write('Введите N: ');
  readln(N);
  write('Введите элементы массива: ');
  for i := 1 to N do
    read(A[i]); 
  
  max := -MaxInt;
  
  for i := 2 to N-1 do
    if not((A[i] > A[i - 1]) and (A[i] > A[i + 1])) and 
    not((A[i] < A[i - 1]) and (A[i] < A[i + 1])) then if A[i] > max then max := A[i];
  {проверяем те элементы, которые не были проверены в цикле}
  if a[1] > max then max := a[1];
  if a[N] > max then max := a[N];
      
  writeln(max); 
end.

На сегодня всё! Если у вас возникли вопросы, задавайте их в комментариях. И не забывайте рассказывать о нашем сайте своим друзьям!

Learn Pascal » Решение задач на Паскале » Массивы / Array
1 Star2 Stars3 Stars4 Stars5 Stars (Пока оценок нет)
Загрузка...

  1. Этот вопрос пока остается открытым.
    Мы учимся, готовимся к сессии. Как бы не хотелось продолжения, оно откладывается на неопределенный срок.
    Несмотря на это, за период своего существования сайт успел стать самостоятельным организмом. Он поддерживает жизнь и развивается уже безо всякого внутреннего вмешательства. Поэтому вопросы, которые сюда поступают, никогда не отсаются незамеченными. В случае непонимания материала, вы всегда можете написать сюда, и вам обязательно помогут 🙂

  2. Ошибка в Array31. Нужно выводить элементы массива по убыванию, а не по возрастанию.

  3. program array31;

    var
    A: array[1..10] of real;
    N, k, i: integer;

    begin
    write(‘Введите N: ‘);
    readln(N);
    write(‘Введите элементы массива: ‘);
    for i := 1 to N do
    read(A[i]);
    k := 0;
    for i:=N downto 2 do
    if A[i] > A[i — 1] then
    begin
    inc(k);
    write(i, ‘ ‘)
    end;
    writeln;
    write(k);
    end.
    ______
    Вот правильное решение

  4. не очень хорошо.
    Неправильно решена 31 задача.
    Не нравится exit в циклах… на паскале так пишут? (это нормально?)
    Не нравится max := -MaxInt; (такой подход повсеместно).

    в 24 задаче какая-то порнография с флагом.

    в
    25 задаче сравниваются на равенство дробные числа, это нормально в
    паскале? (результат не зависит от реализации компилятора и фазу луны?)

    24 и 24 задачи упадут при N = 1.

    в
    27 задаче какое-то упоротое решение. Что не if (a[i] * a[i+1] < 0)?
    Одно умножение и одно сравнение вместо сравнения, 2 сложений и трех
    модулей.

    В 18 задаче если условие не выполнится ни разу- программа упадет, т.к. K будет хранить мусор, а a[k]….

    В 19 задаче нормальный человек пойдет с конца массива.

    в 20, 21, 22 задаче забыли присвоить ноль sum. Не все паскали нулем инициализируют.

    В 22 здоровый человек напишет 2 цикла. От 1 до К и от Л до Н

    23 вообще неверное решена. Деление на ноль там возможно. Если K = 1, L = N

    Уроки вы писать бросили, но надо сначала старые исправить.

  5. Здравствуйте!
    Начну с конца.
    1) Прочитайте внимательнее условие задачи 23, а именно момент 1<K.
    2) Вы неправы. Я вот себя вполне хорошо чувствую и написала один. Пересмотрите свои взгляды на читабельность и лаконичность кода и согласитесь.
    3) О инициализации нулем мы писали ранее и не раз — мы используем PascalABC и указываем это явно. Он инициализирует.
    4) Массив из 10 элементов. Не из миллиона. Здесь это имеет право на жизнь. А ваша оптимизация очень в духе "не заводить лишних временных переменных". (Такое себе)
    5) 27 задача: WAT???
    6) 24 задача — да, тут я должна согласиться (на самом деле, массив на 10 элементов — тоже что-то странное. Не знаю, под чем это было написано)
    7) Дробные числа в задаче 25 — это везде нормально. Тут дело уже в точности. Но для этой задачи это нормально.
    8) Что с флагом-то не так?
    9) Чем вам MaxInt не угодил?
    10) Про exit — не очень понимаю, какой вы ответ ожидаете от нас услышать. Если мы написали, то, вероятно, считаем это нормальным.
    11) По поводу неправильного решения 31 задачи — уточните, пожалуйста, что вам здесь не нравится.

    Так или иначе — благодарю за проявленный интерес и желаю успехов!

  6. создать программу которая дано x и y природное число. z изменчивый дать значения 5 когда (x+y) простое число, в обратном случее значение 6 : напечатать значение z изменчивого. И как это понять

  7. «Написать программу в которой даны X и Y — вещественные числа. Переменной Z присвоить значение 5, если (X+Y) = целое число, иначе присвоить 6. Вывести значение переменной Z. » — я так это понял.

  8. Видимо, пришло время на C переходить. Огромное спасибо создателям сайта: Вы — лучшие!

Добавить комментарий

Ваш e-mail не будет опубликован.