Помощь - Поиск - Пользователи - Календарь
Полная версия: Загадочный модуль.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Aileen
Нужно было составить функцию, вычисляющую сумму отрицательных элементов массива Y1,Y2,Y3,...,Yn, используя модуль. Проблема в том, что компилятор указывает на stack overflow, ошибку 202. Посоветуйте,пожалуйста, как избавиться от неё!!!!!!!

Модуль:


unit pr1;
Interface
const n=6;
type mas=array[1..n] of integer;
function sum(a:mas;d:integer):integer;
procedure vvod(var a:mas;d:integer);
Implementation
function sum;
var sum1,i:integer;
begin
sum1:=0;
for i:=1 to d do
if a[i]<0 then sum1:=sum1+a[i];
writeln('сумма элементов:',sum(a,i));
end;
procedure vvod;
var i:integer;
begin
for i:=1 to d do
write(a[i]);
writeln;
end;
end.

Сама программа:
program pr1_1;
uses pr1;
var b:mas;
i:integer;
begin
vvod(b,n );
sum(b,n);
end.


М
Теги !

volvo
Цитата
как избавиться от неё
Убрать бесконечную рекурсию:

function sum;
var sum1,i:integer;
begin
sum1:=0;
for i:=1 to d do
if a[i]<0 then sum1:=sum1+a[i];
writeln('сумма элементов:',sum1); { <--- Здесь }
end;

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

Кстати, у тебя в процедуре Vvod почему-то происходит "вывод", надо бы поменять write(a[i]) на readln(a[i]) ...
Aileen
ввод - это техническая отчепятка )))
спасибо за помощь, сйчас попробую запустить...

Добавлено через 15 мин.
Итог запуска: с модулем всё в порядке, а программа не идёт. =(
volvo
Цитата
программа не идёт.
Исправленную версию - в студию... Только уже без "технических опечаток"...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.