Помощь - Поиск - Пользователи - Календарь
Полная версия: Загадочный модуль.
Форум «Всё о Паскале» > 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
Цитата
программа не идёт.
Исправленную версию - в студию... Только уже без "технических опечаток"...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.