Сколько раз меняется знак в данной последовательности чисел? Запомнить номера позиций, в которых меняется знак - Turbo Pascal

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

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

Помогите пожалуйста переделать программу. Вот задание для программы :Задан массив. Определить сколько раз меняется знак в данной последовательности чисел, запомнить номера позиций, в которых меняется знак. Вот сама программа:
Помогите сделать ее с процедурами ввода, обработки, вывода.

Решение задачи: «Сколько раз меняется знак в данной последовательности чисел? Запомнить номера позиций, в которых меняется знак»

textual
Листинг программы
uses crt;
const n=10;
type mas=array[1..n] of integer;
procedure vvod(var a:mas);
var i:byte;
begin
randomize;
for i:=1 to n do
 begin
  repeat
  a[i]:=-10+random(21);
  until a[i]<>0;//массив без 0
 end;
end;
procedure vyvod(a:mas);
var i:byte;
begin
writeln('Массив');
for i:=1 to n do
write(a[i]:3);
writeln;
end;
procedure obr(a:mas);
var i,k:byte;
begin
writeln('Знак меняется в позициях');
k:=0;
for i:=2 to n do
if a[i]*a[i-1]<0 then
 begin
  inc(k);
  write(i:2);
 end;
writeln;
if k=0 then write('Знак ни разу не меняется')
else write('Всего смен знака=',k)
end;
var a:mas;
begin
clrscr;
vvod(a);
vyvod(a);
obr(a);
readln
end.

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

  1. Объединение модулей (использование): uses crt;
  2. Объявление константы размера массива: const n=10;
  3. Объявление типа массива: type mas=array[1..n] of integer;
  4. Объявление процедуры ввода массива: procedure vvod(var a:mas);
  5. Объявление переменной для цикла: var i:byte;
  6. Цикл для заполнения массива: for i:=1 to n do
  7. Повторение ввода значения до ненулевого: repeat a[i]:=-10+random(21); until a[i]<>0;
  8. Объявление процедуры вывода массива: procedure vyvod(a:mas);
  9. Вывод значения массива: writeln('Массив');
  10. Цикл для вывода значений массива: for i:=1 to n do
  11. Вывод значения с отступами: write(a[i]:3);
  12. Объявление процедуры обработки массива: procedure obr(a:mas);
  13. Объявление переменных для цикла и счетчика: var i,k:byte;
  14. Цикл для проверки смены знаков: for i:=2 to n do
  15. Проверка знака на смену: if a[i]*a[i-1]<0 then
  16. Увеличение счетчика при смене знака: inc(k);
  17. Вывод номера позиции: write(i:2);
  18. Вывод общего количества смены знаков: write('Всего смен знака=',k)
  19. Проверка на отсутствие смены знаков: if k=0 then write('Знак ни разу не меняется')
  20. Объявление переменной для чтения: var readln;
  21. Начало выполнения программы: begin clrscr; vvod(a); vyvod(a); obr(a); readln; end.

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

6   голосов , оценка 4.333 из 5
Похожие ответы