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

пожалуйста помогите с паскалем)))

Применение функций и процедур

Определить число положительных элементов до первого отрицательного в массивах X(40), Y(50) и Z(N). (N<=50)
kx:=0; ky:=0; kz:=0;
for j:=1 to 40 do
begin
if X[j] > 0 then kx:=kx+1;
else break;
end;
for j:=1 to 50 do
begin
if Y[j] > 0 then ky:=ky+1;
else break;
end;
for i:=1 to N do
begin
if Z[j] > 0 then kz:=kz+1;
else break;
end;
Сергей Смирницкий
Сергей Смирницкий
86 164
Лучший ответ
Доброго времени суток.

Ребят, вы в вопрос вчитайтесь: "Применение функций и процедур". Так что ближе всего 1_and_0. Рискну предложить и свое решение. Т. к. не сказано, что за тип элементов в массиве, то предполагаю, что целые.

Функция получилась такой. Если в массиве нет отрицательных, возвращает число положительных. Чтобы функция могла работать с массивами разной размерности, в качестве параметра используется открытый массив.

function PosElemCount(A: array of Integer): Integer;
var
i, n : Integer;
begin
n := 0;
for i:=Low(A) to High(A) do begin
if A[ i ] > 0 then Inc(n); {считаем только положительные}
if A[ i ] < 0 then Break; {выходим при первом отрицательном}
end;
PosElemCount := n;
end;

Обращаться после инициализации массивов так

WriteLn(PosElemCount(X));
WriteLn(PosElemCount(Y));
WriteLn(PosElemCount(Z));

Удачи!
пишешь функцию (процедуру) , входящие параметры котором, массив, и размерность массива.
Делаешь цикл по массиву, и ищешь первый отрицательный элемент, запоминаешь ИНДЕКС элемента, и делаешь экстренный выход из цикла через break, после чего считаешь все положительные элементы до запомненного ИНДЕКСА.
P.S.: соглашусь с Bender, это эффективнее способ.
Владимр Машедо
Владимр Машедо
13 767
h tt p://borlpasc.narod.ru/faq.htm
Bender +1, только у тебя нули тоже будут считаться отрицательными и счёт будет останавливаться. Нужно сравнение делать ">=". А вообще, должно быть что-то типа:

nx:=0; ny:=0; nz:=0;
for i:=1 to 40 do
begin
if X[ i] > 0 then nx:=nx+1;
if X[ i] < 0 then break;
end;
for i:=1 to 50 do
begin
if Y[ i] > 0 then ny:=ny+1;
if Y[ i] < 0 then break;
end;
for i:=1 to N do
begin
if Z[ i] > 0 then nz:=nz+1;
if Z[ i] < 0 then break;
end;
так нули не будут считаться за положительные, но и не будет прерывать счёт, будто они относятся к отрицательным числам