IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Функции+массивы
-Виталий-
сообщение 2.06.2008 8:08
Сообщение #1


Гость






Напишите функции для вычисления суммы отрицательных элементов двух
одномерных массивов произвольной длины (массива из вещественных и массива
целочисленных элементов).


 К началу страницы 
+ Ответить 
-Виталий-
сообщение 2.06.2008 11:06
Сообщение #2


Гость






Почему выдаёт ошибку 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
сообщение 2.06.2008 13:39
Сообщение #3


Гость






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

function sumv:real; begin
for i:=1 to m do if a[i]<0 then sumv:=sumv{<--- Это - рекурсивный вызов !!! }+a[i]; end;
, и ниже по тексту то же самое...
 К началу страницы 
+ Ответить 
Гость
сообщение 2.06.2008 14:30
Сообщение #4


Гость






Ну и что здесь можно зделать?(((
 К началу страницы 
+ Ответить 
volvo
сообщение 2.06.2008 14:32
Сообщение #5


Гость






Использовать дополнительную переменную для подсчета:

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;
 К началу страницы 
+ Ответить 
-Виталий-
сообщение 2.06.2008 15:06
Сообщение #6


Гость






И как я сам не догадался?!?!?!))
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"