Другие языки программирования и технологии

Помогите пожалуйста написать прогу на Pascal, буду благодарен!

Вводить с клавиатуры массивы и обрабатывать их, пока на запрос “хотите ли Вы продолжать работу программы дальше” пользователь не ответит “нет”. Введены линейные массивы обрабатывать по заданным алгоритмам а), б) и в), которые оформить в виде подпрограмм (процедур и/или функций). Основная программа должна только вводить данные с клавиатуры и выводить результаты работы программы. Каждый раз выводить № запуска программы, введен массив и результаты его обработки.

В одномерном массиве, который состоит из N действительных элементов, вычислить:
а) произведение элементов массива с непарными номерами;
б) сумму элементов массива, расположенных между первым и последним нулевым элементами;
в) переделать массив таким способом, чтобы сперва размещались все положительные елементы, а потом отрицательные (элементы которые равняются 0, считать положительными ).
program Example;
uses crt;
const n = 10;
type vector = array[1..n] of real;

function productOfElementsAtOddIndexes(const v: vector) : real;
var i: integer; product: real;
begin
i := 1;
product := 1;
while i <= n do begin
product := product * v[i];
inc(i, 2);
end;
productOfElementsAtOddIndexes := product;
end;

function sumBetweenFirstAndLastZero(const v: vector) : real;
var i, j: integer; sum: real;
begin
for i:=1 to n do
if v[i]=0 then break;
j := i + 1;
for i:=n downto j do
if v[i]=0 then break;
sum := 0;
while j < i do begin
sum := sum + v[j];
inc(j, 1);
end;
sumBetweenFirstAndLastZero := sum;
end;

procedure rearrangeElements(var v: vector);
var i, j: integer; temp: real;
begin
for i:=1 to n - 1 do
for j:=i + 1 to n do
if (v[j] >= 0) and (v[i] < 0) then begin
temp := v[i];
v[i] := v[j];
v[j] := temp;
end;
end;

var v: vector; i, launch: integer; key: char;
begin
launch := 1;
repeat
clrscr;
writeln('Запуск ', launch, '. Введите ', n, ' элементов массива:');
for i:=1 to n do
read(v[i]);
writeln('Произведение элементов массива с непарными номерами: ', productOfElementsAtOddIndexes(v));
writeln('Сумма элементов массива, расположенных между первым и последним нулевым элементами: ', sumBetweenFirstAndLastZero(v));
writeln('Массив, где сперва размещаются все положительные элементы:');
rearrangeElements(v);
for i:=1 to n do
write(v[i], ' ');
writeln;
writeln('Хотите ли Вы продолжать работу программы дальше? Нажмите N, если нет');
key := readkey;
inc(launch, 1);
until (key = 'n') or (key = 'N');
end.
W_A* *n _T* *e_D (*_*)
W_A* *n _T* *e_D (*_*)
20 861
Лучший ответ
Николай Войцицкий А ты можешь его немного подкорректировать? 1)Чтобы пользователь сам указывал длину массива 2) В случае не правильнго ввода выдавало, что не было 0 элемента или он был последним (это для б) 3) если мы вводим 0 длину массива тоже была ошибка.
знаешь, паскаль это эра 80х, могу на PHP сделать
Николай Войцицкий Мы Pascal сейчас изучаем, нужно на нём.
Тогрул Насибов Лол, а php изобрел Аристотель до нашей эры