Помощь - Поиск - Пользователи - Календарь
Полная версия: Функции+массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Виталий-
Напишите функции для вычисления суммы отрицательных элементов двух
одномерных массивов произвольной длины (массива из вещественных и массива
целочисленных элементов).


-Виталий-
Почему выдаёт ошибку 202: Stack overflow error. ????:

Код
uses crt;
const m=10; n=10;
var a:array [1..m] of real;
b:array [1..n] of integer;
i:integer;

function sumv:real; begin
for i:=1 to m do if a[i]<0 then sumv:=sumv+a[i]; end;
function sumc:integer; begin
for i:=1 to n do if b[i]<0 then sumc:=sumc+b[i]; end;

begin clrscr;
for i:=1 to m do begin a[i]:=random-0.25; write(a[i]:0:3,'  '); end; writeln;
for i:=1 to n do begin b[i]:=random(12)-5; write(b[i],'  '); end;

writeln; writeln('Sum_otr_V: ',sumv);
         writeln('Sum_otr_C: ',sumc);
readkey; end.


volvo
Цитата
Почему выдаёт ошибку 202: Stack overflow error. ????:
Потому что у тебя бесконечная рекурсия:

function sumv:real; begin
for i:=1 to m do if a[i]<0 then sumv:=sumv{<--- Это - рекурсивный вызов !!! }+a[i]; end;
, и ниже по тексту то же самое...
Гость
Ну и что здесь можно зделать?(((
volvo
Использовать дополнительную переменную для подсчета:

function sumv:real;
var s: real;
begin
s := 0;
for i:=1 to m do if a[i]<0 then s:=s+a[i];
sumv := s;
end;
-Виталий-
И как я сам не догадался?!?!?!))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.