Упорядочить часть массива - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Помогите решить задачу: Дан массив x вещественных чисел. Получить упорядоченный по не возрастанию массив, состоящий из чисел данного массива, находящихся между предпоследним и последним отрицательным членом. Указание:проверить массив на наличие элементов между ними.

Решение задачи: «Упорядочить часть массива»

textual
Листинг программы
  1. const n=10;
  2. type mas=array of real;
  3. var a,b:mas;
  4.     i,j,k,j1,j2:integer;
  5.     tmp:real;
  6. begin
  7.  randomize;
  8.  setlength(a,n);
  9.  for i:=low(a) to high(a)do
  10.   begin
  11.    a[i]:=random*(-10+random(31));
  12.    write(a[i]:7:2);
  13.   end;
  14.  writeln;
  15.  i:=high(a);
  16.  k:=0;
  17.  while (i>=low(a))and(k<2) do
  18.   begin
  19.    if a[i]<0
  20.     then
  21.       begin
  22.        if k=0 then j2:=i
  23.               else j1:=i;
  24.        inc(k)
  25.       end;
  26.    dec(i)
  27.   end;
  28.  if k<2 then writeln('нет двух отрицательных')
  29.         else
  30.          begin
  31.           if j2-j1=1
  32.            then writeln('предпоследний и последний отрицательные рядом')
  33.            else
  34.             begin
  35.              inc(j1);
  36.              setlength(b,j2-j1);
  37.              writeln('массив между предпоследним и последним отрицательными, упорядоченный по не возрастанию:');
  38.              for i:=low(b) to high(b) do begin b[i]:=a[j1];inc(j1) end;
  39.              if high(b)>=0
  40.               then
  41.                begin
  42.                 for i:=low(b) to high(b)-1 do
  43.                  for j:=low(b) to high(b)-i-1 do
  44.                   if b[j]<b[j+1] then begin tmp:=b[j];b[j]:=b[j+1];b[j+1]:=tmp end;
  45.                 for i:=low(b) to high(b) do write(b[i]:7:2)
  46.                end
  47.             end
  48.          end    
  49. end.

Объяснение кода листинга программы

  1. Объявляются константы и переменные: n=10, mas=тип массива real, a, b=массивы, i, j, k, j1, j2=целые числа, tmp=реальное число.
  2. Выполняется инициализация генератора случайных чисел.
  3. Массив a заполняется случайными числами от -10 до 10 с шагом 1.
  4. В цикле выводятся элементы массива a.
  5. Переменная i инициализируется значением high(a).
  6. Переменная k инициализируется значением 0.
  7. Цикл while выполняется до тех пор, пока i больше или равно low(a) и k меньше 2.
  8. Если a[i] отрицательное, то выполняется условие: если k=0, то j2=i, иначе j1=i; k увеличивается на 1.
  9. i уменьшается на 1.
  10. Если k меньше 2, то выводится сообщение нет двух отрицательных.
  11. Если k=2, то выполняется условие: если j2-j1=1, то выводится сообщение предпоследний и последний отрицательные рядом, иначе: k увеличивается на 1; создается массив b размером j2-j1; выводится сообщение массив между предпоследним и последним отрицательными, упорядоченный по не возрастанию:; для каждого элемента b[i] выводится его значение.
  12. Если high(b) больше или равно 0, то выполняется условие: для каждого элемента b[i] от low(b) до high(b)-1 выводится его значение; для каждого элемента b[i] от low(b) до high(b)-i-1 выполняется сортировка по возрастанию методом пузырька.
  13. Код завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы