Определите число соседств в последовательности - 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
, упорядочен ли массив по убыванию, и выводится соответствующее сообщение. Этот код фактически работает со введенным пользователем массивом целых чисел и выполняет различные действия с этими числами, подсчитывая различные характеристики и проверяя его порядок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д