Определите число соседств в последовательности - Pascal
Формулировка задачи:
Добрый день , помогите решить такую задачку:
2.Даны натуральное число n, целые числа а1 ,…,аn:
а) определите число соседств:
1) двух положительных чисел;
2) двух чисел разного знака;
б) Выясните, является ли последовательность а1 , …, аn упорядоченной по убыванию.
Формирование массива(ввод) в виде процедуры,(вывод) массива в виде другой процедуры Поиск числа соседств двух положительных чисел и
двух чисел разного знака в виде функций, в каждую подпрограмму передавать исходный массив в виде параметра.
Решение задачи: «Определите число соседств в последовательности»
textual
Листинг программы
const nmax=30; type mas=array[1..nmax] of integer; procedure vvod(var a:mas;var n:byte); var i:byte; begin repeat write('Введите размер массива от 2 до ',nmax,' n='); readln(n); until n in [2..nmax]; writeln('Введите ',n,' целых чисел'); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; end; procedure vyvod(a:mas;n:byte); var i:byte; begin writeln('Исходный массив'); for i:=1 to n do write(a[i],' '); writeln; end; function pol_2(a:mas;n:byte):byte; var k,i:byte; begin k:=0; for i:=1 to n-1 do if(a[i]>0)and(a[i+1]>0)then k:=k+1; pol_2:=k; end; function raz_z(a:mas;n:byte):byte; var k,i:byte; begin k:=0; for i:=1 to n-1 do if((a[i]>0)and(a[i+1]<0))or((a[i]<0)and(a[i+1]>0))then k:=k+1; raz_z:=k; end; function ubyv(a:mas;n:byte):byte; var k,i:byte; begin k:=0; i:=1; while(k=0)and(i<n) do if a[i]<a[i+1]then k:=1 else i:=i+1; ubyv:=k end; var a:mas; n:byte; begin vvod(a,n); vyvod(a,n); writeln('Число соседств двух положительных чисел =',pol_2(a,n)); writeln('Число соседств двух чисел с разными знаками =',raz_z(a,n)); if ubyv(a,n)=0 then write('Массив упорядочен по убыванию') else write('Массив не упорядочен по убыванию') end.
Объяснение кода листинга программы
- Константа
nmax
устанавливается со значением 30 (const nmax=30;
) - Создается тип
mas
- массив из 30 целых чисел (type mas=array[1..nmax] of integer;
) - Описывается процедура
vvod
, принимающая массивa
и размер массиваn
по ссылке и запрашивающая ввод элементов массива с клавиатуры. - Описывается процедура
vyvod
, принимающая массивa
и размер массиваn
и выводящая исходный массив на экран. - Описывается функция
pol_2
, принимающая массивa
и размер массиваn
, которая подсчитывает число соседств двух положительных чисел в массиве. - Описывается функция
raz_z
, принимающая массивa
и размер массиваn
, которая подсчитывает число соседств двух чисел с разными знаками в массиве. - Описывается функция
ubyv
, принимающая массивa
и размер массиваn
, которая проверяет, упорядочен ли массив по убыванию. - Объявляется массив
a
и переменнаяn
типаbyte
. - В основной программе вызывается процедура
vvod
для ввода массиваa
и определения размераn
. - Вызывается процедура
vyvod
для вывода исходного массива. - Вызываются функции
pol_2
иraz_z
для подсчета числа соседств двух положительных чисел и числа соседств двух чисел с разными знаками соответственно. - Проверяется с помощью функции
ubyv
, упорядочен ли массив по убыванию, и выводится соответствующее сообщение. Этот код фактически работает со введенным пользователем массивом целых чисел и выполняет различные действия с этими числами, подсчитывая различные характеристики и проверяя его порядок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д