Определите число соседств в последовательности - Pascal

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

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

Добрый день , помогите решить такую задачку: 2.Даны натуральное число n, целые числа а1 ,…,аn: а) определите число соседств: 1) двух положительных чисел; 2) двух чисел разного знака; б) Выясните, является ли последовательность а1 , …, аn упорядоченной по убыванию. Формирование массива(ввод) в виде процедуры,(вывод) массива в виде другой процедуры Поиск числа соседств двух положительных чисел и двух чисел разного знака в виде функций, в каждую подпрограмму передавать исходный массив в виде параметра.

Решение задачи: «Определите число соседств в последовательности»

textual
Листинг программы
  1. const nmax=30;
  2. type mas=array[1..nmax] of integer;
  3. procedure vvod(var a:mas;var n:byte);
  4. var i:byte;
  5. begin
  6. repeat
  7. write('Введите размер массива от 2 до ',nmax,' n=');
  8. readln(n);
  9. until n in [2..nmax];
  10. writeln('Введите ',n,' целых чисел');
  11. for i:=1 to n do
  12.  begin
  13.   write('a[',i,']=');
  14.   readln(a[i]);
  15.  end;
  16. end;
  17. procedure vyvod(a:mas;n:byte);
  18. var i:byte;
  19. begin
  20. writeln('Исходный массив');
  21. for i:=1 to n do
  22. write(a[i],' ');
  23. writeln;
  24. end;
  25. function pol_2(a:mas;n:byte):byte;
  26. var k,i:byte;
  27. begin
  28. k:=0;
  29. for i:=1 to n-1 do
  30. if(a[i]>0)and(a[i+1]>0)then k:=k+1;
  31. pol_2:=k;
  32. end;
  33. function raz_z(a:mas;n:byte):byte;
  34. var k,i:byte;
  35. begin
  36. k:=0;
  37. for i:=1 to n-1 do
  38. if((a[i]>0)and(a[i+1]<0))or((a[i]<0)and(a[i+1]>0))then k:=k+1;
  39. raz_z:=k;
  40. end;
  41. function ubyv(a:mas;n:byte):byte;
  42. var k,i:byte;
  43. begin
  44. k:=0;
  45. i:=1;
  46. while(k=0)and(i<n) do
  47. if a[i]<a[i+1]then k:=1
  48. else i:=i+1;
  49. ubyv:=k
  50. end;
  51. var a:mas;
  52.     n:byte;
  53. begin
  54. vvod(a,n);
  55. vyvod(a,n);
  56. writeln('Число соседств двух положительных чисел =',pol_2(a,n));
  57. writeln('Число соседств двух чисел с разными знаками =',raz_z(a,n));
  58. if ubyv(a,n)=0 then write('Массив упорядочен по убыванию')
  59. else write('Массив не упорядочен по убыванию')
  60. end.

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

  1. Константа nmax устанавливается со значением 30 (const nmax=30;)
  2. Создается тип mas - массив из 30 целых чисел (type mas=array[1..nmax] of integer;)
  3. Описывается процедура vvod, принимающая массив a и размер массива n по ссылке и запрашивающая ввод элементов массива с клавиатуры.
  4. Описывается процедура vyvod, принимающая массив a и размер массива n и выводящая исходный массив на экран.
  5. Описывается функция pol_2, принимающая массив a и размер массива n, которая подсчитывает число соседств двух положительных чисел в массиве.
  6. Описывается функция raz_z, принимающая массив a и размер массива n, которая подсчитывает число соседств двух чисел с разными знаками в массиве.
  7. Описывается функция ubyv, принимающая массив a и размер массива n, которая проверяет, упорядочен ли массив по убыванию.
  8. Объявляется массив a и переменная n типа byte.
  9. В основной программе вызывается процедура vvod для ввода массива a и определения размера n.
  10. Вызывается процедура vyvod для вывода исходного массива.
  11. Вызываются функции pol_2 и raz_z для подсчета числа соседств двух положительных чисел и числа соседств двух чисел с разными знаками соответственно.
  12. Проверяется с помощью функции ubyv, упорядочен ли массив по убыванию, и выводится соответствующее сообщение. Этот код фактически работает со введенным пользователем массивом целых чисел и выполняет различные действия с этими числами, подсчитывая различные характеристики и проверяя его порядок.

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


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

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

10   голосов , оценка 4.7 из 5

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

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

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