Определите число соседств в последовательности - 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.

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

  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
Похожие ответы