Описать функцию, дающую число перемен знака в вещественном векторе длины 20 - Turbo Pascal
Формулировка задачи:
Здравствуйте!
Помогите написать программу на Паскале:
Описать функцию, дающую число перемен знака в вещественном векторе длины 20.
Решение задачи: «Описать функцию, дающую число перемен знака в вещественном векторе длины 20»
textual
Листинг программы
program pr;
const
Csize = 20;
type
arr = array [1..Csize] of real;
var
i, c: integer;
a: arr;
function shif(x: arr): integer;
var
cout, j: integer;
begin
cout := 0;
for j := 1 to Csize - 1 do
if ((a[j] > 0) and (a[j + 1] < 0)) or ((a[j] < 0) and (a[j + 1] > 0)) then
begin
cout := cout + 1;
end;
shif := cout;
end;
begin
for i := 1 to Csize do
begin
a[i] := random(21) - 10;
write(a[i]:3);
end;
c := shif(a);
writeln;
writeln('Число перемен знака в векторе: ', c);
end.
Объяснение кода листинга программы
- Создается программа pr.
- Задаются константы Csize и тип данных arr.
- Создается переменная i и инициализируется значением 1.
- Создается переменная c и инициализируется значением 0.
- Создается переменная a и инициализируется значением array [1..Csize] of real; - это массив из 20 чисел типа real.
- Определяется функция shif, которая принимает аргумент x типа arr (массив из 20 чисел типа real).
- Инициализируются переменные cout и j значением 0 и 1 соответственно.
- В цикле for j := 1 до Csize - 1 выполняется следующая логика:
- Проверяется условие: если (a[j] > 0) и (a[j + 1] < 0) или (a[j] < 0) и (a[j + 1] > 0), то увеличивается значение переменной cout.
- После выполнения условия, переменная cout увеличивается на 1.
- Значение переменной cout возвращается из функции shif.
- В основной части программы выполняется цикл for i := 1 до Csize.
- Внутри цикла переменная a[i] инициализируется случайным числом от -10 до 10.
- Выводится значение a[i] с помощью функции write.
- Переменная c инициализируется значением функции shif(a).
- Выводится значение переменной c с помощью функции write.
- Программа завершается.